标签: python-unittest

组件测试的测试框架

我正在寻找适合我要求的测试框架.以下是我在自动化测试期间需要执行的步骤:

  • SetUp(有一些输入文件需要读取或复制到某些特定的文件夹中.)
  • 执行(独立运行)
  • 撕下(清理以使系统处于旧状态)

除此之外,我还希望有一些智能来确保.cc文件是否已更改,所有可以验证更改的测试都应该运行.

我正在评估PyUnit,cppunit与scons为此.考虑运行这个问题以确保我的方向正确.你能建议任何其他测试框架工具吗?选择正确的测试框架应该考虑哪些其他要求?

c++ testing cppunit scons python-unittest

2
推荐指数
1
解决办法
2262
查看次数

没有创建Django测试表

我正在尝试为我的django项目编写测试用例,但是当我运行"$ ./manage.py test"命令时,它创建测试数据库,但它没有创建任何表,我收到一个错误,表不存在.欢迎任何建议.这是我通过"./manage.py inspectdb> models.py"创建的模型

class MyCustomModel(models.Model):
    name = models.CharField(max_length=200)
    last_name = models.CharField(max_length=200)

    class Meta:
       managed = False
       db_table = 'MY_TABLE'
Run Code Online (Sandbox Code Playgroud)

python django django-testing python-unittest pytest-django

2
推荐指数
3
解决办法
2573
查看次数

如何使用全局参数跳过python unittest

我在python中有一组单元测试.其中一些使用pyqt打开图形对象,有些只是标准的独立测试.我的目标是至少自动运行不需要打开窗口的测试,因为除非它等待用户输入然后失败.

注意:

  • 我无法删除图形测试(来自项目的约束)
  • 默认情况下,所有测试都应该运行,但是只运行一些非图形参数的参数
  • 我的测试套件是使用unittest.TestLoader()构建的

我最好的猜测是将一个全局参数传递给TestSuite,以便每个测试都可以检查该值以了解它是否应该跳过.但在阅读unittest文档后,我找不到办法做到这一点.

我知道这个问题:如何在没有全局变量的情况下将参数发送到UnitTest,但我本来期望一些单元测试配置.

python pyqt python-unittest

2
推荐指数
1
解决办法
814
查看次数

如何测试python包中的装饰器

我正在编写我的第一个python包,我想为以下装饰器编写单元测试:

class MaxTriesExceededError(Exception):
    pass

def tries(max_tries=3, error_message=os.strerror(errno.ETIME)):
    def decorator(func):
        try_count = 0
        def wrapper(*args, **kwargs):
            try_count+=1
            try:
                if try_count <= max_tries:
                    result = func(*args,**kwargs)
                    return result
                else:
                    raise MaxTriesExceededError(error_message)
            except:
                if try_count <= max_tries:
                    wrapper(*args,**kwargs)
                else:
                    raise Exception

        return wraps(func)(wrapper)

    return decorator
Run Code Online (Sandbox Code Playgroud)

装饰器的目的是在函数失败超过max_tries时抛出错误,但是如果没有超过最大尝试次数则吃错误并再试一次.说实话,我不确定代码没有错误.我的问题是双重的,代码是否正确,我如何使用unittest为它编写单元测试?

python decorator python-unittest

2
推荐指数
1
解决办法
2500
查看次数

如何断言运算符<和> =没有实现?

最初我没有使用unittest框架,所以要测试同一个类的两个对象使用运算符是不可比的<,>=我做了类似的事情:

try:
    o1 < o2
    assert False
except TypeError:
    pass
Run Code Online (Sandbox Code Playgroud)

之后,我决定开始使用该unittest模块,因此我将测试转换为使用相同模块编写测试的方式.

我试图通过以下方式完成与上述相同的事情:

self.assertRaises(TypeError, o1 < o2)
Run Code Online (Sandbox Code Playgroud)

但这并不是很有效,因为它o1 < o2试图调用运算符<,而不是对函数的引用,这应该作为测试的一部分调用.

有没有办法在不需要o1 < o2包含函数的情况下完成我需要的东西?

python unit-testing exception python-3.x python-unittest

2
推荐指数
1
解决办法
378
查看次数

Python Unittest抛出未捕获的TypeError:__ init __()占用1个位置参数,但给出了2个

我正在尝试首次使用unittest创建我的第一个自动化测试套件.

但是,当我尝试执行我的测试套件时,unittest会抛出以下异常:

Traceback (most recent call last):

File "testing_pos_line.py", line 31, in <module>
    unittest.main()
  File "C:\Users\barnej78\AppData\Local\Continuum\Anaconda3\lib\unittest\main.py", line 93, in __init__
    self.parseArgs(argv)
  File "C:\Users\barnej78\AppData\Local\Continuum\Anaconda3\lib\unittest\main.py", line 140, in parseArgs
    self.createTests()
  File "C:\Users\barnej78\AppData\Local\Continuum\Anaconda3\lib\unittest\main.py", line 144, in createTests
    self.test = self.testLoader.loadTestsFromModule(self.module)
  File "C:\Users\barnej78\AppData\Local\Continuum\Anaconda3\lib\unittest\loader.py", line 123, in loadTestsFromModule
    tests.append(self.loadTestsFromTestCase(obj))
  File "C:\Users\barnej78\AppData\Local\Continuum\Anaconda3\lib\unittest\loader.py", line 92, in loadTestsFromTestCase
    loaded_suite = self.suiteClass(map(testCaseClass, testCaseNames))
  File "C:\Users\barnej78\AppData\Local\Continuum\Anaconda3\lib\unittest\suite.py", line 24, in __init__
    self.addTests(tests)
  File "C:\Users\barnej78\AppData\Local\Continuum\Anaconda3\lib\unittest\suite.py", line 57, in addTests
    for test in tests:
TypeError: __init__() takes 1 positional argument but 2 were …
Run Code Online (Sandbox Code Playgroud)

python python-unittest

2
推荐指数
1
解决办法
2601
查看次数

在python unittest中声明`is`

assertEqualunittestPython处理的最佳方法是什么,而不是对其进行测试,而不是==对其进行测试is?我想确保我拥有相同的对象,而不仅仅是比较相等的对象。这很重要,因为我正在使用的某些对象是具有古怪的比较运算符的堆类型。

python unit-testing python-unittest

2
推荐指数
1
解决办法
688
查看次数

Chromedriver在测试后关闭

所以我的理解是调用driver.quit或close是关闭驱动程序和关联窗口的正确方法.

然而,当运行我的测试时,似乎即使没有调用driver.quit而是调用pass,窗口仍然关闭.

我正在使用python与通过pytest执行的unittest测试用例.我也通过Pycharm运行标准unitests.在所有情况下,浏览器都会按照描述关闭.我希望浏览器保持开放,我可以调试测试.我可以打电话给睡眠(9000),但这看起来很愚蠢.

此外,浏览器在某些计算机上注释退出时保持打开状态,但在具有相同chromedriver,Chrome版本和代码的其他计算机上则不会保持打开状态.

分析chromedriver日志,它似乎注册了一个QuitAll命令,但我不知道从哪里获取它.pyc文件可以不被覆盖吗?

退出代码:

def tearDown(self):
    pass
    # self.driver.quit()
Run Code Online (Sandbox Code Playgroud)

python selenium python-3.x selenium-chromedriver python-unittest

2
推荐指数
1
解决办法
4632
查看次数

使用py.test但在命令行中排除测试列表?

我想用py.test排除一个列表(大约5项)的测试.

我想通过命令行将此列表提供给py.test.

我想避免修改源代码.

怎么做?

python pytest python-unittest

2
推荐指数
1
解决办法
1588
查看次数

如何解决“ ValueError:空模块名称”?

在我的UnitTest目录中,我有两个文件,mymath.pytest_mymath.py

mymath.py 文件:

def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

def multiply(a, b):
    return a * b

def divide(numerator, denominator):
    return float(numerator) / denominator
Run Code Online (Sandbox Code Playgroud)

test_mymath.py文件是:

import mymath
import unittest

class TestAdd(unittest.TestCase):
    """
    Test the add function from the mymath library
    """

    def test_add_integer(self):
        """
        Test that the addition of two integers returns the correct total
        """
        result = mymath.add(1, 2)
        self.assertEqual(result, 3)

    def test_add_floats(self):
        """ …
Run Code Online (Sandbox Code Playgroud)

python python-unittest

2
推荐指数
2
解决办法
1469
查看次数