pytest(2)-简单使用
pytst框架实现一些前后置(固件,夹具)的处理,常用三种
setup/teardown,setup_calss/teardown_class
为什么需要这些功能
比如:web自动化执行之前,请问需要打开浏览器吗?用例执行后需要关闭浏览器?
import pytest
class TestDemo:
#这是在所有的用例执行只执行一次
def setup_class(self):
print("在每个类执行前的初始化功的工作,比如创建日志对象,创建数据库连接,创建接口请求对象")
#在每个用例之前执行一次
def setup(self):
print("在执行用例执行前执行")
def test_019(self):
print("用例1")
def test_020(self):
print("用例2")
def teardown(self):
print("在执行测试用例之后的扫尾的代码:如关闭浏览器")
#只执行一次
def teardown_class(self):
print("在每个类执行后的扫尾的工作,比如:销毁日志对象,销毁数据库的链接,销毁接口的请求参数")
if __name__ == '__main__':
pytest.main(["-vs"])
注意:和unittest不一样,全是小写
使用@pytest.fixture()装饰器来实现部分用例前后置
@pytest.fixture(scope="",params="",autouse="",ids="",name="")
- scope : 表示的是被@pytest.fixture装饰的方法的作用域。
- function(默认),表示在每个函数执行时执行
- class,表示在类执行前执行
- module,作用域在模块
- packge/session,
- params : 参数化(支持,list[],元祖(),字典列表[{},{},{]],字典元祖({},{},{}}))
参数化固定写法
@pytest.fixture(scope="class",params=GetYaml(path).getData("FileName"),autouse=True)
def fixtureDemo(request):
print("fixtureDemo-----------"+request.param)
return request.param
@pytest.fixture(scope="class",params=GetYaml(path).getData("FileName"),autouse=True)
def fixtureDemo(request):
print("前置")
yield request.param #return和yield都表示返回的意思,但是return的后面不能有代码,yield返回后,后面可以接代码
print("后置")
- autouse=True : 自动执行,默认False
- ids : 当使用params参数化,给每一个值设置一个变量。意义不大
- nama : 给表示的被@pytest.fixture表姐的方法取一个别名,
当取了别名之后,那么原来的名称就不用了
通过conftest.py和pytest.fixture() 结合使用实现全局的前置应用(比如:项目的全局登录,模块的全局)
- conftest.py文件是单独存放的一个夹具配置文件,名称是不能更改
- 用处可以在不同的py文件中使用同一个fixture函数
- 原则上,conftest.py需要和运行的用例放到一个放到同一层,并且不需要做任何的imprt导入操作

总结:
setup/teardown,setup_class/teardown_class 它作用于所有用例或者所有类的
@pytest.fixtrue() 他的作用即可以部分也可以全部签前后置
conftest.py和@pytest.fixtrue()结合使用,作用于全局的前后置
断言
assert
assert 1==2
pytest结合allure-pytest插件生成allure测试报告
pytest-html
allure-pytest
- 下载,解压,配置path路径
https://github.com/allure-framework/allure2/releases
path路径配置
问题:dos可以验证但是pycharm验证失败,怎么办,重启pycharm
验证是否安装完成
allure --version

- 生成json格式的临时报告
在pytest.ini,addopts 加入:
--alluredir ./temp
- 生成alluredir报告
os.system("allure generate ./temp -o ./report --clean")
allure generate 命令,固定的
./temp 临时的json格式报告的路径
-o 输出output
./report 生成的allure报告的路径
--clean 清空./report路径原有的报告
--alluredir ./temp allure generate ./temp -o ./report --clean

浙公网安备 33010602011771号