首页 > 编程语言 >python 代码测试(pytest)

python 代码测试(pytest)

时间:2022-08-17 21:59:04浏览次数:87  
标签:python 代码 fruit pytest 测试 测试函数 test def

前话

代码测试用于检验代码运行结果是否符合预期。优势一: 编写测试函数,更规范,高效的核对代码运行结果,当被测试对象进行了调整和重构的时候,可以节省大量人工排查问题的时间。优势二:编写测试代码可以对代码功能更具底气,可以拥有适合的测试覆盖度,避免隐藏的问题代码。

使用模块

pytest 长久保存测试代码,可多次重复使用,并支持扩展应用程序和库的复杂功能测试。

使用示例

简单函数测试

函数测试,先创建测试脚本,编写测试代码,如下:

# 当前文件名 test_assert1.py
# 被测试函数
def f():
    return 3

# 测试函数
def test_function():
    assert f() == 4   # 预期的测试结果

再从命令行运行测试脚本:
pytest test_assert1.py

使用类分组多个测试:

# content of test_class.py
class TestClass:
    def test_one(self):
        x = "this"
        assert "h" in x

    def test_two(self):
        x = "hello"
        assert hasattr(x, "check")

配置已知参数的数据库或者数据集

@pytest.fixture 装饰器, 可以定义一些公用的数据集合,但后续不用再去调用即可直接使用,如下,my_fruit 函数没有再进行调用即可直接使用进行结果比较。

def fruit(name):
    return name

@pytest.fixture
def my_fruit():
    return "apple"

def test_fruit(my_fruit):
    assert my_fruit == fruit('apple')

为测试函数添加标记

@pytest.mark 装饰器可以轻松给测试函数添加自定义标记:

@pytest.mark.webtest
def test_send_http():
    pass  # perform some webtest test for your app

def test_something_quick():
    pass

class TestClass:
    def test_method(self):
        pass

只运行标记为 webtest 的测试函数:
pytest -v -m webtest

运行除 webtest 之外的所有测试函数:
pytest -v -m "not webtest"

只运行指定测试类/测试类下的某个测试函数:
pytest -v test_server.py::TestClass
pytest -v test_server.py::TestClass::test_method

标签:python,代码,fruit,pytest,测试,测试函数,test,def
From: https://www.cnblogs.com/magower/p/16596859.html

相关文章

  • Python抓取汇率并绘制成折线图
    公司的一个小工作,需要抓取美元、欧元汇率并绘制成折线图。很小的功能,背后却涉及很多Python知识,甚至一些冷门的知识点。知识点总结如下:1.python抓取网页数据,利用pandas.rea......
  • # Conda虚拟环境中的pip,python 等路径是base环境而非本虚拟环境
    现象一次运行项目发现,原本可以正常运行的项目,突然提示有个包不存在,但是经过piplist发现在我的虚拟环境中是存在这个包的,并且此时我是正常的位于我的虚拟环境中。报错......
  • python复习
    break;continue;passord();chr()格式化:%s;f’str’;format序列:字符串、列表、元组...                    索引切片:sname[start:end:step] ......
  • Python入门系列(一)安装环境
    python是什么python是一门很受欢迎的语言,除了不能生孩子以外,其它都可以做。它擅长的领域是脚本工具和科学数据这一块,比如大数据,数据分析什么的。python安装为了演示和......
  • python 中根据RNA序列输出密码子编码的氨基酸序列
     001、(base)root@PC1:/home/test4#lstest.py(base)root@PC1:/home/test4#cattest.py##测试程序#!/usr/bin/pythonrna="AUGGCCAUG......
  • Unity 代码调用重新生成csproj文件
    结论先放结论:editor代码中直接调用Unity.CodeEditor.CodeEditor.CurrentEditor.SyncAll();原因在一些操作后,比如修改csc.rsp的内容之后,需要重新生成csproj文件方......
  • 学习:python 第三方模块介绍
    第三方模块是由第三方个人或者组织使用python开发,需要先下载安装才能使用的工具包第三方模块来自各行各业使用python的开发人员为了不同行业的不停业务提供了解决方案 ......
  • 谷粒商城(无CURD代码)
    GUIGU-GULIMALL项目:写在开头:这份笔记仅仅记录了一些环境搭建以及基础篇中一些技术的使用,基本的CURD大部分没有记录,参考了很多网友的博客。若有冒犯,请联系我删除。参考......
  • 学习:python 内置模块datetime
    importtimeimportdatetime#获取当前的日期时间n=datetime.datetime.now()print(n)#获取一个指定时间da=datetime.datetime(2018,2,13,5,23,45)print(da)#日期......
  • 学习:python 内置模块 time
    importtimes1=time.time()#获取一个时间戳:当前时间距离1979年元旦0时的秒数,用户计算程序执行秒数开始前记录一次结束后记录一次相减forxinrange(1,10001):......