Pytest基础自学系列
Posted COCOgsta
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pytest基础自学系列相关的知识,希望对你有一定的参考价值。
视频来源:B站《2022最新pytest接口自动化测试框架,三天带你精通pytest,带你写出最好的代码!》
一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!
Pytest框间实现一些前后置(固件,夹具)的处理,常用三种
一、setup/teardown,setup_class/teardown_class
为什么需要这些功能?
比如:web自动化执行用例之前,请问需要打开浏览器吗?用例执行之后需要关闭浏览器?
import time
import pytest
class TestLogin:
# 这个在所有的用例之前只执行一次
def setup_class(self):
print('在每个类执行前的初始化的工作:比如,创建日志对象,创建数据库的连接,创建接口的请求对象')
# 在每个用例之前执行一次
def setup(self):
print('\\n在执行用例之前执行的代码:打开浏览器,加载网页')
age = 18
def test_09_mashang(self):
print("测试百里")
def test_08_mashang(self):
print("测试百里")
@pytest.mark.run(order=1)
@pytest.mark.skipif(age >= 18, reason='有条件的跳过')
def test_03_mashang(self):
print("测试百里")
@pytest.mark.run(order=2)
@pytest.mark.usermanage
def test_05_mashang(self):
print("测试百里")
@pytest.mark.run(order=3)
@pytest.mark.smoke
@pytest.mark.skip(reason='跳过用例')
def test_06_mashang(self):
print("测试百里")
def teardown(self):
print('\\n在执行用例之后的扫尾的代码:关闭浏览器')
def teardown_class(self):
print('在每个类执行后的扫尾工作:比如:销毁日志对象,销毁数据库的连接,销毁接口的请求对象')
二、使用@pytest.fixture()装饰器来实现部分用例的前后置
@pytest.fixture(scope="", params="", autouse="", ids="", name="")
- scope表示的是被@pytest.fixture标记的方法和作用域。function(默认),class,module,package/session。
- paparams:参数化(支持,list,tuple,字典列表[,,],字典元组(,,,))
- autouse=True:自动执行,默认False
- ids:当使用params参数化时,给每一个值设置一个变量名。意义不大。
- name:表示的是被@pytest.fixture标记的方法取一个别名。
@pytest.fixture(scope="function", params=['成龙', '甄子丹', '菜鸡']) # 这里的params是参数名,有s
def my_fixture(request):
return request.param # 这里是属性名,是没有s的
# return和yield都表示返回的意思,但是return后不能跟代码,yield返回后后面可以接代码
class TestLogin:
def test_09_mashang(self, my_fixture):
print("测试百里09")
print('----------------'+ str(my_fixture))
def test_08_mashang(self):
print("测试百里08")
三、通过conftest.py和@pytest.fixture()结合使用实现全局的前置应用(比如:项目的全局登录,模块的全局处理)
- conftest.py文件是单独存放的一个夹具配置文件,名称是不能够更改。
- 用处可以在不同的py文件中使用同一个fixture函数。
- 原则上conftest.py需要和运行的用例放到同一层,并且不需要做任何的import导入的操作。
总结:
setup/teardown,
setup_class/teardown_class 它是作用域所有用例或者所有的类
@pytest.fixture() 它的作用是既可以部分也可以全部前后置
conftest.py和@pytest.fixture()结合使用,作用于全局的前后置
四、断言
assert 1==2
五、pytest结合allure-pytest插件生成allure测试报告
- 下载,解压,配置path路径。
https://github.com/allure-framework/allure2/releases
验证:allure --version
问题:dos可以验证但是pycharm验证失败,怎么办?重启pycharm
- 生成json格式的临时报告
--alluredir ./temp
- 生成allure报告
os.system('allure generate ./temp -o ./report --clean')
./temp 临时的json格式报告的路径
-o 输出output
./report 生成的allure报告的路径
--clean 清空/report原来的报告
以上是关于Pytest基础自学系列的主要内容,如果未能解决你的问题,请参考以下文章