day94 pytest的fixture详解
学习日期:20241210
学习目标:pytest基础用法 -- pytest的fixture详解
学习笔记:
fixture的介绍
fixture是 pytest 用于将测试前后进行预备、清理工作的代码处理机制。
fixture相对于setup和teardown来说有以下几点优势:
- fixure命名更加灵活,局限性比较小
- conftest.py 配置里面可以实现数据共享,不需要import就能自动找到一些配置
fixture夹具
@pytest.fixture,scope作用域的意思
- (scop="function") 每一个函数或方法都会调用,默认就是function
- 只有调用了func函数的才会运行func
python
import pytest
import requests
#默认scope是function
@pytest.fixture()
def func():
print("我是前置步骤")
def test_getmobile(func):
print("测试get请求")
params = {'key1': 'value1', 'key2': 'value2'}
r=requests.get('https://httpbin.org/get',params=params)
print(r.status_code)
assert r.status_code == 200
res = r.json()
assert res['url'] == 'https://httpbin.org/get?key1=value1&key2=value2'
assert res['origin'] == '163.125.202.248'
assert res['args']['key1'] == 'value1'
assert res['args']['key2'] == 'value2'
def test_postmobile():
print("测试post请求")
params = {'key': 'value'}
r = requests.post('https://httpbin.org/post', data=params)
print(r.status_code)
assert r.status_code == 200
print(r.json())
res=r.json()
assert res['args'] == {}
assert res['data'] == ''
assert res['form']['key'] == 'value'
if __name__ == '__main__':
pytest.main()
总结
- fixture是 pytest 用于将测试前后进行预备、清理工作的代码处理机制
- scope作用域(scop="function") 每一个函数或方法都会调用,默认就是function