conftest.py 配置可以实现数据共享,不需要import就可以自动找到一些配置.
conftest.py需要与运行的用例在同一个包下面,并且要有init.py文件
1.fixture(scope="funtion",params=None,autouse=False,ids=None,name=None)详解
1.1.scope
使用范围: session>module>class>function
相当于为用例设置前置条件,分为全局,模块级,类级,函数级.
="module" 实现多个.py跨文件共享前置
如果一个.py里面有多个用例,都调用了此fixture,那么该fixture只在该.py里所有用例开始前执行一次.
="session" 以实现多个.py文件跨文件使用一个session完成多个用例
="function" 针对函数有效
使用场景:用例1需要登陆,用例2不需要登陆
# 不带参数,默认为function
@pytest.fixture()
def login():
print("输入账号密码登陆")
login_role() #登陆
在测试用例中使用:
def test_case1(login):
print("需要登陆的用例")
def test_case2():
print("不需要登陆的用例")
="class"
如果一个class里面有多个用例,都调用了此fixture,那么该fixture只在该class里所有用例开始前执行一次.
1.2 autouse
默认为False,当为True时,不需要每个用例都去传参!
2.yield
相当于teardown操作
使用方式一:
# 关闭浏览器
@pytest.fixture(scope="session", autouse=True)
def browser_close():
yield driver
driver.quit()
print("test end!")
使用方式二:
1 @pytest.fixture(scope="function") 2 def set_business_domain_url(req): 3 print('在调用此函数的测试用例执行前 do something,相当于setup fuction')
4 yield 5 print('在调用此函数的测试用例执行完后 so something,相当于teardown function')
3.html测试报告详解
3.1 钩子函数
定义: 就是把我们实现的hook函数在某一时刻挂接到目标挂载点上.相当于 监听.可以这么理解.
钩子函数 不允许 抛出异常!
3.2 填写测试环境
def pytest_configure(config):
config._metadata["项目名称"] = '111'
config._metadata['接口地址'] = api['api_url']
config._metadata['测试账号'] = testdata['user']