pytest(fixtrue,conftest.py,allure报告以及logo定制)

一、使用fixture实现部分前后置

setup/teardown
setup_class/teardown_class

##语法:

@pytest.fixture(scope="作用域",params="数据驱动",autouser="自动执行",ids="自定
义参数名称",name="别名")

scope=“作用域”
functioin:在每个方法(测试用例)的前后执行一次。
class:在每个类的前后执行一次。
module:在每个py文件前后执行一次。
package/session:每个package前后执行一次。

1.function级别:在每个函数的前后执行

@pytest.fixture(scope="function")
def execute_sql():
    print("-------执行数据库验证,查询数据库---------")
    yield  "111111"      # return  "111111"
    print("--------关闭数据库的连接--------")

调用:

    @pytest.mark.run(order=5)
    def test_veo02(self,execute_sql):
        print("--------------veo__yier__02-----------------"+execute_sql)

yield和return,都可以返回值,并且返回的值可以在测试用例中获取。
yield生成器,反复一个对象,对象中可以有多个值,yield后面可以接代码。
return 返回一个值,return后面不能接代码。

注意:如果加入autouse=True参数,那么表示自动使用,那么和setup、
teardown功能一致。

2.class级别:在每个类的前后执行一次。

# 类级别
@pytest.fixture(scope="class")
def execute01_sql():
    print("-------类级别执行数据库验证,查询数据库---------")
    yield "类级别"  # return  "111111"
    print("--------类级别关闭数据库的连接--------")

调用:

@pytest.mark.usefixtures("execute01_sql")  #class级别调用
class Test_veo_01_api:

    @pytest.mark.smoke
    def test_veo06(self):
        print("--------------veo__dayi__06-----------------")

3.module级别:在每个模块的前后执行一次。和setup_module和teardown_module效果一样。

#模块级别
@pytest.fixture(scope="module",autouse= True)
def execute02_sql():
    print("-------模块级别执行数据库验证,查询数据库---------")
    yield  "模块级别"      # return  "111111"
    print("--------模块级别关闭数据库的连接--------")

4.package、sesion级别,一般是和connftest.py文件一起使用。

autouse=True 自动调用
params=数据(list,tuple,字典列表,字典元祖)

def read_yaml():
     return ['甄子丹','成龙',"菜10"]
#模块级别
@pytest.fixture(scope="module",autouse= True)
def execute02_sql():
    print("-------模块级别执行数据库验证,查询数据库---------")
    yield  "模块级别"      # return  "111111"
    print("--------模块级别关闭数据库的连接--------")

这里的params用于传输数据(list,tuple,字典列表,字典元祖),需要在夹
具里面通过request(固定写法)接收,然后通过request.param(固定写法)
获取数据,然后再通过yield把数据返回到测试用例中,然后使用。

ids参数:它要和params一起使用,自定义参数名称。意义不大。了解即可

@pytest.fixture(scope="function",params=read_yaml(),ids=["ids01","ids02","ids03"])
def execute03_sql(request):
    print(request.param)
    print("--------execute03_sql数据库验证,查询数据库--------")
    yield request.param
    print("--------execute03_sql关闭数据库的连接--------"+request.param)

name参数:对fixtrue固件取的别名。意义不大。了解即可,用了别名后,那
么真名会失效,只能使用别名。

#name参数 :对fixtrue固件取的别名。用了别名后,那么真名会失效,只能使用别名。
@pytest.fixture(scope="function",params=read_yaml(),ids=["ids01","ids02","ids03"],name = 'bie_ming')
def execute05_sql(request):
    print(request.param)
    print("--------execute03_sql数据库验证,查询数据库--------")
    yield request.param
    print("--------execute03_sql关闭数据库的连接--------"+request.param)

调用

    # 别名调用
    def test_veo007(self,bie_ming):
        print("--------------veo007-----------------"+bie_ming)

二、当fixture的级别为package,session时,那么一般和conftest.py

文件一起使用。
1.名称是固定的conftest.py,主要用于单独的存放fixture固件的。
2.级别为package,sesion时,那么可以在多个包甚至多个py文件里面共享前后置。
举例:登录。
模块:模块的共性
3.发现conftest.py文件里面的fixture不需要导包可以直接使用。
4.conftest.py文件,可以有多个。

作用:出现重复日志,初始化一次日志对象。规避日志重复。连接数据库。关闭数据库。
注意:多个前置同时存在的优先级。
1.conftest.py为函数级别时优先级高于setup/teardown
2.conftest.py为class级别时优先级高于setup_class/teardown_class
3.conftest.py为session级别时优先级高于setup_module/teardown_module

三、pytest断言

使用的是python原生的assert

    def test_andy05(self):
        print("--------------andy05-----------------")
        assert  "dsa" in "abc"

四、pytest结合allure-pytest实现生成allure报告

第一步
1.官网下载allure文件:https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/
2.下载之后解压到非中文的目录
3.把bin路径配置到系统变量path中:E:\allure-2.13.7\bin (注意分号不要是中文的)
第二步:
安装allure报告:pip install allure-pytest
验证:allure --version
注意:可能需要重启pycharm。

allure安装和使用看这里

五、实现logo定制。

在这里插入图片描述

.side-nav__brand {
background: url('allure_logo.jpg') no-repeat left center !important;
margin-left: 10px;
height: 50px;
background-size: contain !important;
}


.side-nav__brand span{
display: none;
}
.side-nav__brand:after{
content: "WRMS";
margin-left: 20px;
}

然后点击 config ;在 打开 allure.yml 加上 - custom-logo-plugin ,保存

六、企业级的Allure报告的定制

左边的定制:
1.史诗(项目名称): @allure.epic(“项目名称:码尚教育接口自动化测试项目”)
2.特性(模块名称):@allure.feature(“模块名称:用户管理模块”)
3.分组(接口名称):@allure.story(“接口名称:查询商品”)
4.测试用例标题:
(1)@allure.title(“测试用例标题:输入正确的条件查询成功1”),适用于一个方法对
应一个用例。
(2)allure.dynamic.title(“测试用例标题:输入正确的条件查询成功2”),适用于一个
方法对应多个用例。也就是有数据驱动的情况。

1 import allure
2 import pytest
3 @allure.epic("项目名称:xxx接口自动化测试项目")
4 @allure.feature("模块名称:用户管理模块")
5 class TestApi:
6
7 @allure.story("接口名称:查询商品")
8 @allure.title("测试用例标题:输入正确的条件查询成功1")
9 def test_product_manage_weiwei(self):
10 allure.dynamic.title("测试用例标题:输入正确的条件查询成功2")
11 print("测试打印一")
12
13 @allure.story("接口名称:测试登陆接口")
14 def test_baili(self,user_setup):
15 print("测试打印一")
16 print(user_setup)

右边的定制:
1.用例的严重程度
blocker:中断缺陷:致命bug:内存泄漏,用户数据丢失,系统奔溃。
critical:临界缺陷:严重bug:功能未实现,功能错误,重复提交
normal:一般缺陷,一般bug,条件查询有误,大数据了无响应等
minor级别:次要缺陷:提示bug,颜色搭配不好,字体排列不整齐,错别字。
trivial级别:轻微缺陷:轻微bug,没有使用专业术语,必填项无提示。建议。

1 @allure.severity(allure.severity_level.BLOCKER)

2.用例描述

@allure.story("接口名称:查询商品")
@allure.title("测试用例标题:输入正确的条件查询成功1")
@allure.description("测试用例描述1")
def test_product_manage_weiwei(self):
allure.dynamic.title("测试用例标题:输入正确的条件查询成功2")
allure.dynamic.description("测试用例描述2")
print("打印打印3")

3.测试用例连接的定制
接口地址:
Bug地址:
测试用例的地址:

1 @allure.story("接口名称:查询商品")
2 @allure.title("测试用例标题:输入正确的条件查询成功1")
3 @allure.description("测试用例描述1")
4 @allure.link(name="接口地址",url="https://api.weixin.qq.com/cgi‐
bin/token")
5 @allure.issue("Bug连接")
6 @allure.testcase("测试用例地址")
7 def test_product_manage_weiwei(self):
8 allure.dynamic.title("测试用例标题:输入正确的条件查询成功2")
9 allure.dynamic.description("测试用例描述2")
10 print("测试打印4")

4.测试用例步骤的定制

1 @allure.story("接口名称:查询商品")
2 @allure.title("测试用例标题:输入正确的条件查询成功1")
3 @allure.description("测试用例描述1")
4 @allure.link(name="接口地址",url="https://api.weixin.qq.com/cgi‐
bin/token")
5 @allure.issue("Bug连接")
6 @allure.testcase("测试用例地址")
7 def test_product_manage_weiwei(self):
8 allure.dynamic.title("测试用例标题:输入正确的条件查询成功2")
9 allure.dynamic.description("测试用例描述2")
10 #增加步骤
11 for a in range(1,10):
12 with allure.step("测试用例步骤"+str(a)+""):
13 print("步骤"+str(a)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值