#学习打卡第3天
今天学习主题:自动化pytest专项
学习目标:
弄清框架里的功能概念、用法
1、yield
2、fixture
3、allure
next()函数
返回迭代器的下一个项目。
yield + 函数 = 生成器
eg:
def provider():
for i in range(5):
return i
返回结果:0
使用yield
def provider():
for i in range(5):
yield i
p = provider
print(next(p))
print(next(p))
print(next(p))
返回结果:1,2,3
fixture
1、@python.fixture
在方法前,定义一个@python.fixture,后面的用例中,可以直接找到fixture中定义的值
2、@pytest.fixture(scope="session/module")
执行顺序:session>module>function
在方法前,定义@pytest.fixture(scope="session/module"),用例将按照优先级执行
如果是@pytest.fixture(aotouse=True),则在同等级class的用例中,该用例会优先执行。
(在命令行中使用-- setup show 文件名 可以查看用例的执行顺序)
3、fixture工厂模式
在一个测试用例中需要多次调用同一个fixture的时候,
返回一个生成数据的函数,这样就能在用例中多次调用了。
4、fixture反射
allure生成报告
1、安装:brew
2、安装allure-pytest第三方库
3、生成json:pytest --alluredir ./report
4、生成html页面:allure generate
5、打开html页面:不能直接双击index.html,需要使用命令allure open 报告目录/
6、使用allure提供的一些API:添加步骤说明、操作步骤、插入图片、插入视频、添加case链接、添加bug链接、定义stories
----分割线:
pytest识别不到用例
1、检查是否安装pytest插件
2、运动方式选择pytest
开始写接口用例
1、get请求
r = requests.get("http://XXX")
print(r.status_code)
print(r.text)
封装:
def test_query(self):
payload={
"XX" : XX
}
r = requests.get("http://XXX", params=payload) #params参数
print(r.text)
assert r.status_code == 200
结果:相当于参数和url一起发送请求