一、setup/teardown,setup_class/teardown_class
为什么需要这些功能?
比如:web自动化执行用例之前,需要打开浏览器嘛?用例执行后需要关闭浏览器?
class TestProduct:
def setup_class(self):
print('在每个类执行前的初始化工作:比如:创建日志对象、数据库的连接、创建接口的请求对象')
def setup(self):
print("\n在测试用例执行之前执行的代码:打开网页,加载网页")
@pytest.mark.run(order=1)
def test_02_zhaoyun(self):
# time.sleep(3)
print('测试赵云')
@pytest.mark.run(order=3)
def test_03_yaoyao(self):
# time.sleep(3)
print('测试瑶瑶')
def test_04_liubei(self):
# time.sleep(3)
print('测试刘备')
# assert 1 == 2
@pytest.mark.run(order=2)
def test_05_libai(self):
# time.sleep(3)
print('测试李白')
def test_06_xiaoming(self):
# time.sleep(3)
print('测试小明')
def teardown(self):
print("\n执行测试用例之后执行的代码")
def teardown_class(self):
print("在每个类中的扫尾工作")
注意:和unittest不一样,全部都是小写。
二、使用fixture装饰器来实现部分用例的前后置
语法规则:
@pytest.fixture(scope='function', params='', autouse=True, ids='', name='')
scope表示被装饰器标记的方法的作用域,将函数名放到方法的参数中
默认为 function 函数级别 ,class 为类级别,module 为模块级别
@pytest.fixture(scope='function')
def my_fixture():
print('这是前置的方法')
yield
print('这是后置的方法')
params:参数化,支持list,cuple,dist,字典元组四种,有多少参数执行多少次
@pytest.fixture(scope='function', params=['打野', '中单', '射手'])
def my_fixture(request):
return request.param
class TestProduct:
def test_06_xiaoming(self, my_fixture):
print('测试小明')
print('-----' + str(my_fixture) + '-----')
注意:
如需前后置和参数一起用,将request.param放到yield中
@pytest.fixture(scope='function', params=['打野', '中单', '射手'])
def my_fixture(request):
print('前置')
yield request.param
print('后置')
autouse:自动执行方法,不用再调用,默认False
ids:给参数名称,意义不大
name:给标记的方法取个别名,用处也不是很大,取了别名以后传参就不能用本身的名称了。
三、通过conftest.py和@pytest.fixture()结合实现全局前置应用
应用:项目的全局登陆,模块的全局处理
语法规则:
1 conftest.py 文件是单独存放的一个夹具配置文件,名称不能更改
2 用处可以在不同的 py文件中使用同一个fixture函数。
3 原则上 conftest.py 需要和运行的用例放到統一层,并且不需要做任何的import 导入的操作。
总结:
setup/teardown,setup_class/teardown_class 它是作用于所有用例或者所有的类。
@pytest.fixture()作用既可以部分也可以全部前后置。
conftest.py和@pytest.fixture()结合只用,作用于全局的前后置。
四、pytest结合allure-pytest插件生成allure测试报告
mac下安装allure
一、下载allure
1 、官网下载
2 、直接获取,https://dl.bintray.com/qameta/generic/io/qameta/allure/allure/2.7.0/allure-2.7.0.zip
二、解压下载的allure包
1 、解压的包, 放在喜欢的目录下
2 、获取allure文件夹的bin文件夹路径。把bin拖到terminal,即可获取path
bin 文件夹路径:/Users/用户名字/Desktop/atlas1.0/27other/allure-2.7.0/bin
三、配置macOS Catalina的环境变量
1 、需要查看电脑是什么版本,才知道环境变量是什么文件。
查看Mac版本
macOS Catalina
2 、macOS Catalina,需要修改.zprofile文件
3 、.zprofile文件,在/Users/用户名字/.zprofile路径下。使用common+shift+.显示隐藏文件
4 、把文件拖到编辑器中,进行添加allure的bin文件夹的path
# allure
PATH="/Users/用户名字/Desktop/atlas1.0/27other/allure-2.7.0/bin:${PATH}"
export PATH
添加allure的bin文件夹的path
四 、验证环境变量是否添加成功
打开terminal,输入:allure --version, 有输出版本号就是成功了
allure --version
五 、安装 allure-pytest
1 、 pip3 install allure-pytest
如果有上网代理,就输入代理信息再进行下载allure-pytest
export http_proxy="http://用户名字:密码@IP:端口号”
export https_proxy="http://用户名字:密码@IP:端口号”
2 、查看是否安装成功,pip3 list
pip3 list
六 、这样就可以在pycharm使用allure生成测试报告了
1 、pytest --alluredir=报告文件路径
2 、allure serve 报告文件路径
注意:若终端中allure --version有版本,pycharm中没有,重启pycharm加载坏境
allure使用
生成json格式的临时报告,在ini中
--alluredir ./路径
生成allure报告,在main函数下,
os.system('allure generate ./temp_report -o ./report --clean')
allure generate 固定命令
./temp_report 临时的json格式报告的路径
-o 输出output
./report 生成的allure报告的路径
–clean 清空原来的报告