用pytest编写测试用例进行数据验证,测试用例的性质随组执行而变化

穆图·库马尔

我正在使用pytest编写用于数据验证的单元测试用例,每个测试用例都写在方法内部。当我单独运行每个测试用例时,它会给出正确的结果,但是当我尝试一起运行所有测试用例时,它会通过失败的测试用例。我会使用 pytest 排序,但我有 400 个测试用例。谁能建议我一个解决方案?

示例测试用例

import pymongo
import re
import unittest
import pytest


myclient = pymongo.MongoClient("mongodb://root:[email protected]:27017")
mydb = myclient["Ecomm_Product_db"]
mycol = mydb["products"]
cursor = mycol.find({})


class Data_Validation(unittest.TestCase):     

        def test_category_name(self):
                '''Asserts given special characters are not available in the category name'''
                regex = re.compile('[@_!#$/%^*()<>?|}{~:],')
                for name in cursor:
                        assert regex.search(name['category'])==None

        def test_category_type(self):
                '''Asserts category name value type is an string '''
                for name in cursor:
                        assert type(name['category'])==str

        def test_category_minlength(self):
                '''Asserts given min length condition for category name '''
                for name in cursor:
                        assert len(name['category'])>=5

        def test_category_maxlength(self):   
                '''Asserts given max length condition for category name '''
                for name in cursor:
                        assert len(name['category'])<=50
出色地

如果cursor是全局范围内的生成器,则使用它的第一个测试将耗尽它,因此对于所有其余测试用例,它将为空。由于断言都在循环中,它们不会被运行。最好使用pytest 夹具。,看起来像:

import pymongo
import re
import unittest
import pytest
from contextlib import closing

@pytest.fixture
def cursor():
    with closing(pymongo.MongoClient("mongodb://root:[email protected]:27017")) as myclient:
        mydb = myclient["Ecomm_Product_db"]
        mycol = mydb["products"]
        yield mycol.find({})

def test_category_name(cursor):
    '''Asserts given special characters are not available in the category name'''
    regex = re.compile('[@_!#$/%^*()<>?|}{~:],')
    for name in cursor:
        assert regex.search(name['category'])==None

def test_category_type(cursor):
    '''Asserts category name value type is an string '''
    for name in cursor:
        assert type(name['category'])==str

def test_category_minlength(cursor):
    '''Asserts given min length condition for category name '''
    for name in cursor:
        assert len(name['category'])>=5

def test_category_maxlength(cursor):   
    '''Asserts given max length condition for category name '''
    for name in cursor:
        assert len(name['category'])<=50

每次这样你都会得到一个新的光标。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

阳性测试用例和阴性测试用例

来自分类Dev

如何为此编写测试用例

来自分类Dev

Android测试用例顺序

来自分类Dev

beforeInterceptor的测试用例

来自分类Dev

如何通过编写测试用例来测试指令?

来自分类Dev

Django事务测试用例在sqlite上进行数据迁移时引发IntegrityError

来自分类Dev

在哪里学习编写测试用例?

来自分类Dev

放气测试用例

来自分类Dev

Junit测试用例

来自分类Dev

为计划的作业编写测试用例

来自分类Dev

测试用例的Android权限

来自分类Dev

如何计算用pytest编写的测试用例?

来自分类Dev

从非测试用例类进行断言

来自分类Dev

pytest夹具用于某些测试用例

来自分类Dev

无法使用Marbel测试编写测试用例

来自分类Dev

beforeInterceptor的测试用例

来自分类Dev

使用Mockito的测试用例执行失败

来自分类Dev

Django事务测试用例在sqlite上进行数据迁移时引发了IntegrityError

来自分类Dev

从测试用例中激活测试用例

来自分类Dev

编写计划作业的测试用例

来自分类Dev

在nunit中对bdd测试用例进行并行执行

来自分类Dev

CppUnit:无法编写测试用例

来自分类Dev

测试用例assertException

来自分类Dev

如何计算用pytest编写的测试用例?

来自分类Dev

避免执行外部插件的测试用例

来自分类Dev

如何为 ProcessBuilder 编写测试用例

来自分类Dev

在 React 中用 Jest 编写测试用例

来自分类Dev

健全性测试用例编写

来自分类Dev

访问“it”“测试用例”中的夹具数据