pytest(2)

一、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

imgbin 文件夹路径:/Users/用户名字/Desktop/atlas1.0/27other/allure-2.7.0/bin

三、配置macOS Catalina的环境变量

1 、需要查看电脑是什么版本,才知道环境变量是什么文件。

img查看Mac版本

imgmacOS 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

img添加allure的bin文件夹的path

四 、验证环境变量是否添加成功

打开terminal,输入:allure --version, 有输出版本号就是成功了

imgallure --version

五 、安装 allure-pytest

1 、 pip3 install allure-pytest

如果有上网代理,就输入代理信息再进行下载allure-pytest

export http_proxy="http://用户名字:密码@IP:端口号”

export https_proxy="http://用户名字:密码@IP:端口号”

2 、查看是否安装成功,pip3 list

imgpip3 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 清空原来的报告

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值