企业微信通讯录添加名单参数化添加只执行第一条,其他参数跳过

问题链接:https://gitlab.com/milkway58/hogwartswangtong.git(homework_two)
hogwarts · main · milkway58 / HogwartsWangTong · GitLab
我在base.py 添加setup和teardown没有生效,希望老师帮忙解答

有几个问题你要注意一下

第一个问题:

提问要准确,提供正确的可点的url。把有问题的文件路径说明清楚

项目的问题

我大概能看出来你想实现的需求,是想在每次用例开始的时候设定窗口尺寸,用例结束的时候退出进程。
但是这个中间有几个问题

问题1, driver 实例化了两次,做了两次max window的操作。

  • 这部分的操作,init 构造函数已经实现了,完全没必要再去写一个重复的setup

问题2

setup、 teardown 有特殊的含义,不要这样命名你自己定义的函数。

问题3

quit可以杀死chromedriver 进程以及关闭窗口,所以你不需要在quit之后 close

总结

如果想实现每个用例driver 的初始化,只需要课上教的通过构造函数初始化即可
如果想要实现每个用例执行完之后杀死进程关闭窗口,只需要在testcase的teardown添加 即可,不要再base里面添加。

我的问题是,已经初始化了,可执行参数化只能执行第一条,后面的参数无法执行,问题没解决啊

看完

老师,您也说了base里我的代码已经初始化了(init),代码我也不需要修改什么,但我执行代码为何只执行第一个参数,现在问题还是老样子,老师能不能把修改好的代码链接附上

课程的代码稍微改了一部分,加了一个setup,加了一个teardown 就可以实现了

import pytest

from web.page_object.add_member_page import AddMemberPage
from web.page_object.contact_page import ContactPage
from web.page_object.index_page import IndexPage


class TestAddMember:
    """
    测试用例类
    """
    def setup(self):
        """
        每次用例开始之前定义实例self.index
        :return: 
        """
        self.index = IndexPage()

    @pytest.mark.parametrize(("name", "accid", "phone"),
                             [("name1", "3333", "13199990000"), ("name2", "5555", "13199990001")])
    def test_add_member(self, name, accid, phone):
        """
        1. 在首页点击添加成员
        2. 在添加成员填充成员信息, 姓名、手机号、账号
        3. 在添加成员页面点击保存
        4. 在通讯录页面查看成员是否保存成功
        """
        # 测试用例的步骤
        # 和测试用例相关的内容,不要再po内维护,而是在用例中维护我们的测试数据
        phone_list = self.index.goto_add_member().\
            add_member(name, accid, phone).get_members()
        # 实际结果是否在预期结果内
        assert phone in phone_list

    # @pytest.参数化测试数据
    def test_add_member_fail(self):
        """
        添加成员失败
        :return:
        """
        name = "ddd"
        index = IndexPage()
        # 注意,调用add_memberfail
        error_message = index.goto_add_member().add_member_fail(name)
        assert name in error_message

    def teardown(self):
        """
        用例结束之后退出浏览器
        :return: 
        """
        self.index.driver.quit()

谢谢老师答疑 :heart: