Pytest框架(fixture,配置,插件,allure)
一、Pytest的fixture
import pytest
@pytest.fixture()
def login(username='wuya',password='admin'):
if username=='wuya' and password=='admin':
return True
else:
print('账户或者密码错误')
def test_profile(login):
# 测试函数test_profile的形式参数就是login同时该形式参数也是Fixture函数的对象
assert login==True
二、Conftest.py 在工程下面创建文件conftest.py
通过conftest.py可以共享fixture,fixture可以很好的解决测试固件的案例应用,依据它的思想可以编写多个案例,再本质的说就是通过conftest.py文件来达到共享fixture。conftest.py虽然是一个Python模块的文件,但是它是不能导入的,这点需要特别的注意。
测试固件的分离 如:验证腾讯文件登录信息时浏览器的打开与关闭
import pytest
from selenium import webdriver
@pytest.fixture()
def driver():
return webdriver.Chrome()
@pytest.fixture()
def init(driver):
driver.maximize_window()
driver.get('https://file.qq.com/')
# 测试步骤和断言
yield
driver.close()
三、pytest.ini
在Pytest的配置文件中,除了conftest.py外,我们还可以使用pytest.ini,它是Pytest测试框架的主配置文件,可以改变Pytest默认行为,比如我们每次在执行时候带的-v输出详细的信息,以及-s打印输出详细的测试用例信息。我们在工程的根目录下创建pytest.ini的文件。
配置文件的主要内容 pytest.ini.py
创建file
[pytest]
#指定执行时候的默认信息
addopts= -v -s
#注册标记
markers=
login:执行标记为login的测试函数
register:执行标记为register的测试函数
logout:执行标记为logout的测试函数
#指定Pytest的最低版本号
minversion=3.0
#指定忽略执行的目录
norecursedirs=.pytest_cache
#指定测试目录
testpaths=tests
#指定测试模块搜索的规则
python_files=test_*
#指定测试类搜索的规则
python_classes=Test*
#指定测试函数搜索规则
python_functions=test_*
注意事项:添加pytest.ini后,执行错误为:UnicodeDecodeError: 'gbk' codec can't decode byte 0xa1 in position 52: illegal multibyte sequence
解决思路:打开pytest.ini的文件,在右下角把utf-8切换为gbk
四、Pytest常⽤插件
pytest单元测试框架有很丰富的插件,下⾯分别介绍这些插件的应⽤。
(2)Pytest-html
(3)Pytest-rerunfailures
使⽤的场景是:--reruns --N N就是重试的次数
python -m pytest -v tests/test_add.py --reruns=2 --html=report/add.html
五、下载allure软件
安装库:pip3 install allure-pytest 搭建环境变量:D:\allure-2.7.0\bin
查看版本:allure --version
python -m pytest -v tests/test_add.py --alluredir=report/result 执行test_add.py在report目录下result下生成json的文件
allure generate report/result/ -o report/html --clean --->将report/result里的内容在report下生成html的目录,里面包含了html的测试报告
allure serve report/result -->启动allure的服务,自动打开测试报告
六、pip3 install -U pytest 更新pytest