首页 > 其他分享 >pytest基础使用

pytest基础使用

时间:2022-12-31 23:22:26浏览次数:41  
标签:allure 基础 report pytest 使用 test scope class

pytest记录

pytest执行测试用例规则

# .py测试文件必须以test_xxx.py开头,或者以(_test结尾)
# 测试类必须以Test开头,并且不能有init方法
# 测试方法必须以test_开头
# 断言必须使用assert
​
class TestLoagin(object):
    def test_login01(self):
        print("输出信息")
        assert 1 + 1 == 2
​
pytest.main(["test_login.py","-vs"]) # 文件名称可以不写,默认不就是当前文件

打印对应的信息

# pytest中比如print的打印信息,默认是不展示的
# 要在pytest.main(["-s"]) "-s"参数,表示输出对应的打印信息

pytest的四种setup和teardown

不常用,通常是使用fixture的scope进行定义

# 1.setup_module 和 teardown_module 在整个测试用例所在的文件中所有方法运行前和运行后运行且只运行一次
# 2.setup_class 和 teardown_class在整个文件中的一个class中所有用例前后运行
# 3.setup_method和teardown_method在class内的每个方法运行前后运行
# 4.setup_function和teardown_function则是在非class下的每个测试方法前后运行

Allure环境搭建

# 1.下载allure.zip
# 2.解压allure.zip到一个文件目录中
# 3.将G:\lanzhuo\allure-2.13.3\bin路径添加环境变量,path中
# 4.pip install allure-pytest
# 5.cmd窗口allure

pytest结合Allure

# 执行pytest单元测试,生成Allure报告需要的数据存放在/tmp目录
Pytest -lanzhuo --aluredir = ../report/tmp
# 执行命令,生成测试报告
allure generate ../report/tmp -o ../report/report--clean

生成报告

if __name__ == "__main__":
    pytest.main(["-s","--alluredir","../report/tmp"]) # 报告要存放路径
    os.system('allure generate ../report/tmp -o ../report/report --clean') # 把tmp里面的json文件,生成报告到report目录下

allure报告加标签

@allure.epic('ETL') # 项目名称
@allure.feature('登录模块') # 此处是模块名称,比如mysql数据源,sqlserver数据源 # 一级标签,就比如:数据源、任务开发,任务运维
class TestLogin:
    @pytest.mark.parametrize('title,inBody,expData', get_yaml_caseData(os.path.join(testData_path,'loginCase.yml')))
    #@pytest.mark.parametrize('title,inBody,expData',get_excel_data('登录模块','Login','标题','请求参数','响应预期结果'))
    @allure.story("登录-1") # 二级标签
    @allure.title("{title}") # 测试方法的名称
    def test_login(self,title,inBody,expData):
        res = Login().login(inBody)
        #断言:1-局部关键信息相等  2- 包含关系 in
        ApiAssert.define_api_assert(res['msg'],'=',expData['msg'])

fixture用法

fixture定义

# 1.在conftest.py文件里定义夹具
# 2.conftest的作用域,在哪个包里面,就作用哪个包;通常是放到项目根目录
# 3.定义的夹具不需要导入就可以直接使用
import pytest
​
# class级别就类似unittest中的类前置方法
# yield后的类似于unittest中的类后置方法
@pytest.fixture(scope="class")
def start_time():
    pass
​
@pytest.fixture(scope="class")
def return_vaule():
    yield "返回的值"
​
# 手动调用有返回值的夹具,就直接使用函数名称,就不能再使用usefixtures了
    
# 手动调用定义好,没有返回值的夹具,@pytest.mark.usefixtures("函数名称")
​
@pytest.mark.usefixtures("start_time") # 先执行定义好的fixture,再执行类里面的代码块
class Niu:
    pass
​
​
​

Scope作用域

# scope级别
 - function 
 - class 
 - module
 - package/session
# 比如conftest文件在test_case下的作用域
# 若scope=class,比如test_case下面有五个测试类,就会执行五次;
# 若是设置了moude级别的,test_case下面有三个py文件,就会执行三次,
# 若设置了scope=function,若test_case下有十个测试方法,就会执行10次
# 若设置了scope=seesion,则仅执行一次
# scope默认是funciton级别的,就是每个测试方法执行前都会执行一次
​
# autouse=True,默认是False,是否自动被调用,如果设置了为True会自动调用,如果设置了False,则要手动来调;工作中autouse为False手动调用的最多
yield

pytest控制台的几种状态

"""
`.`成功的
​
`F`失败的
​
`E`错误的
​
`S`skip跳过的
​
`deselect`没有被选择的
​
"""

自定义标签

必须在pytest.ini文件里面,这里添加自定义的标签
​
自定义标签名称:pytest.mark.自定义的标签名称
​
如果不添加标签的话,pytest运行以后会出现警告
​
适用场景:指定场景运行
[pytest]
markers = 
    "my_smoke":自定义的标签描述
    title01:
    title02:

只执行自定义的标签

pytest.main("-v","-m","my_smoke","my_smoke02","....")

标签:allure,基础,report,pytest,使用,test,scope,class
From: https://www.cnblogs.com/xiaomengniu/p/17017558.html

相关文章

  • Day6:结束基础语法学习
    运算符补充部分+,-,*,/packageoperator;publicclassDemo01{publicstaticvoidmain(String[]args){//二元运算符//Ctrl+D复制当前......
  • pytorch的基本使用
    1.Anaconda配置pytorch环境1.创建环境在AnacondaPrompt工具中输入condacreate-npyTorch,报如下错误。解决方法:为Anaconda配置国内镜像源。1.方式1:使用conda......
  • JavaScript(JS基础、变量)
    编程语言编程概念:让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。编程语言:机器语言汇编语言高级语言:C、C++、Java、C#等一、JavaScript1......
  • drf快速使用 CBV源码分析 drf之APIView分析 drf之Request对象分析
    目录序列化和反序列化drf介绍和安装使用原生django写接口djangoDRF安装drf快速使用模型序列化类视图路由datagrip使用postman测试接口CBV源码分析drf之APIView分析View类......
  • centos8使用kubeadm搭建高可用k8s集群
    kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。这个工具能通过两条指令完成一个kubernetes集群的部署:#创建一个Master节点kubeadminit#将一个......
  • java基础语法2
    java基础语法2运算符算术运算符:+-*/%++--赋值运算符:=关系运算符:>,>,>=,<=,==,!=,instanceof逻辑运算符:&&,||,!位运算符:&,|,^,~,>>,<<,>>>......
  • Centos7上使用jenkins执行pipeline在容器内部拉取环境运行代码的各种坑
    环境Centos7上部署了三个服务bitbucket192.168.1.156:7900jenkins192.168.1.156:8080docker服务原理在Dockerfile中定义pipelinescripts,然后拉取dockerhub的镜像作......
  • 使用 JavaScript 检测用户是否在线
    有时你可能希望增强你的应用程序以通知用户他们可能已经失去了互联网连接。用户可能正在访问你的网站并收到缓存版本,因此通常看起来他们的互联网仍在工作。然而,他们失去了......
  • Idea使用gitee进行版本控制
    下载安装gitidea中进行git配置File->settings->VersionControl->gitPlugins下载安装gitee添加gitee账户创建gitee仓库,复制仓库地址创建java项目,在java项目的基础上......
  • 【小5聊】基础算法 - 实现字符串1到N位长度的组合关键词
    在本篇文章中,我们讲一起了解下基础算法的运用在程序开发里,算法无处不在,掌握算法才能更好的提高程序效率和质量 【算法返回效果】 【实现的功能描述】当前算法主要实现输......