问题链接: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()
谢谢老师答疑