pytest--python的一种测试框架--pytest常用断言类型

一、pytest常用断言类型

等于:==
不等于:!=
大于:>
小于:<
属于:in
不属于:not in
大于等于:>=
小于等于:<=
是:is
不是:is not

python 复制代码
def test_two():
    assert 1==1
    assert 1 != 2
    assert 1 < 2
    assert 1 > 2
    assert 1 >= 1
    assert 1 <= 1

    assert 'a' in 'abc'
    assert 'a' not in 'bcd'
    assert True is True
    assert False is not True

二、requests+pytest

python 复制代码
import requests
def test_mobile():
    r = requests.get(url="https://api.binstd.com/shouji/query", params={
        "shouji": "13456755448",
        "appkey": "e1d1e3c8fb254b33"
    })
    print(r.status_code)
    assert r.status_code==200
    result=r.json()
    assert result['status']==0
    assert result['msg'] == "ok"
    assert result['result']['shouji'] == "13456755448"
    assert result['result']['province'] == "浙江"
    assert result['result']['city'] == "杭州"
    assert result['result']['company'] =="中国移动"
    assert result['result']['cardtype'] is None
    assert result['result']['creacode'] == "0571"

这个操作,针对之前的requests模块对他进行一个优化对其自身用例进行改进初步实现我们用pytest进行接口测试的测试用例

三、pytest配置项

pytest.ini(固定写法,你如果写错是不生效的),ini在很多框架里面都是作为配置项去使用的。在写路径的时候是可以指定到某个具体的文件的

python 复制代码
[pytest]
testpaths=./testcase

把要执行的目录直接配置到此处,通过终端输入运行pytest命令即可

四、pytest的setup/teardown(前置步骤和后置步骤)

在我们做自动化里面,前置和后置基本上是一个功能,比如我们在做UI自动化,前置需要打开浏览器,后置需要关闭浏览器。在做接口测试自动化,比如我们前置需要去登陆或者插入一些测试数据,做一些测试用例执行前的一个工作,在做完测试用例之后我们需要在后置步骤里面去做一些数据的清理,防止产生一些垃圾数据。

setup/teardown其实分为四个等级分别是:

**模块级--setup_module/teardown_module--开始于模块始末,生效一次;

函数级--setup_function/teardown_function--对每条函数用例生效(不在类中);

类级--setup_class/teardown_class--只在类中前后运行一次(在类中);

方法级--setup_method/teardown_method--开始于方法始末(在类中)。

**

如何将一个.py文件中两条绿色三角符号的测试用例都给运行出来?

答:

python 复制代码
def test_one():
    expect=1
    actual=1
    assert expect==actual#测试专用语句:assert,识别期望与实际值是否相等

def test_two():
    expect=1
    actual=1
    assert expect==actual#测试专用语句:assert,识别期望与实际值是否相等

if __name__=='__main__':
    pytest.main()#会把我们当前用例中的其他测试用例符合条件的都执行

4.1模块级示例:可以看到模块级setup_module/teardown_module开始于模块始末,仅执行一次

python 复制代码
import requests

def setup_module():
    print("准备测试数据")
def teardown_module():
    print("清理测试数据")

def test_mobile1():
    expect=1
    actual=1
    assert expect==actual#测试专用语句:assert,识别期望与实际值是否相等
def test_mobile2():
    expect=1
    actual=1
    assert expect==actual#测试专用语句:assert,识别期望与实际值是否相等
def test_mobile3():
    expect=1
    actual=1
    assert expect==actual#测试专用语句:assert,识别期望与实际值是否相等
def test_mobile4():
    expect=1
    actual=1
    assert expect==actual#测试专用语句:assert,识别期望与实际值是否相等

if __name__=='__main__':
    pytest.main()

4.2函数级示例:可以看到每一条函数执行之前和执行之后各执行一次,setup_function/teardown_function,函数执行多少次它执行多少次。这是不在类class中的

python 复制代码
import requests

def setup_function():
    print("准备测试数据")
def teardown_function():
    print("清理测试数据")

def test_mobile1():
    expect=1
    actual=1
    assert expect==actual#测试专用语句:assert,识别期望与实际值是否相等
def test_mobile2():
    expect=1
    actual=1
    assert expect==actual#测试专用语句:assert,识别期望与实际值是否相等
def test_mobile3():
    expect=1
    actual=1
    assert expect==actual#测试专用语句:assert,识别期望与实际值是否相等
def test_mobile4():
    expect=1
    actual=1
    assert expect==actual#测试专用语句:assert,识别期望与实际值是否相等

if __name__=='__main__':
    pytest.main()

4.3类级示例:可以看到在类中前后运行一次

python 复制代码
import requests

class TestMobile:
    def setup_class(self):
        print("准备测试数据")

    def teardown_class(self):
        print("清理测试数据")

    def test_mobile1(self):
        expect = 1
        actual = 1
        assert expect == actual  # 测试专用语句:assert,识别期望与实际值是否相等

    def test_mobile2(self):
        expect = 1
        actual = 1
        assert expect == actual  # 测试专用语句:assert,识别期望与实际值是否相等

    def test_mobile3(self):
        expect = 1
        actual = 1
        assert expect == actual  # 测试专用语句:assert,识别期望与实际值是否相等

    def test_mobile4(self):
        expect = 1
        actual = 1
        assert expect == actual  # 测试专用语句:assert,识别期望与实际值是否相等



if __name__=='__main__':
    pytest.main()

4.4方法级示例:方法在类中,类中的方法级,可以看到在类中的每个函数都执行一次

python 复制代码
import requests

class TestMobile:
    def setup_method(self):
        print("准备测试数据")

    def teardown_method(self):
        print("清理测试数据")

    def test_mobile1(self):
        expect = 1
        actual = 1
        assert expect == actual  # 测试专用语句:assert,识别期望与实际值是否相等

    def test_mobile2(self):
        expect = 1
        actual = 1
        assert expect == actual  # 测试专用语句:assert,识别期望与实际值是否相等

    def test_mobile3(self):
        expect = 1
        actual = 1
        assert expect == actual  # 测试专用语句:assert,识别期望与实际值是否相等

    def test_mobile4(self):
        expect = 1
        actual = 1
        assert expect == actual  # 测试专用语句:assert,识别期望与实际值是否相等



if __name__=='__main__':
    pytest.main()
相关推荐
Zenova EdgeOS10 分钟前
Go 工业边缘错误处理实战:用 errors 构建可追溯错误链
开发语言·数据库·golang
取名真是22 分钟前
Python 算法知识点从基础到进阶
开发语言·python·算法
梦想不只是梦与想30 分钟前
PyTorch、CPU、GPU、CUDA
人工智能·pytorch·python·深度学习·机器学习·cuda
数字融合31 分钟前
透明化视频孪生危化安全管控解决方案
人工智能·python·安全
FRing0342 分钟前
vue2干货总结3(computed计算属性、watch监听器)
开发语言·前端·vue.js·vue2
Fatbobman(东坡肘子)2 小时前
快速消失的硬盘容量 -- 肘子的 Swift 周报 #160
开发语言·人工智能·redis·ios·swiftui·iphone·swift
揽星河..2 小时前
【C语言】底层程序设计
c语言·开发语言
JavaPub-rodert2 小时前
从零搭建通用管理后台:ShiyuAdmin 的 Go、React 与 RBAC 实践
开发语言·react.js·golang
别问!问就是全会2 小时前
Jupyter Notebook 安装包下载|单元格分块运行,图表直接内嵌
ide·python·其他·jupyter
深蓝AI2 小时前
Python 缓存击穿实测:16 个并发请求如何只回源 1 次
python