我正在寻找适合我要求的测试框架.以下是我在自动化测试期间需要执行的步骤:
除此之外,我还希望有一些智能来确保.cc文件是否已更改,所有可以验证更改的测试都应该运行.
我正在评估PyUnit,cppunit与scons为此.考虑运行这个问题以确保我的方向正确.你能建议任何其他测试框架工具吗?选择正确的测试框架应该考虑哪些其他要求?
我正在尝试为我的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中有一组单元测试.其中一些使用pyqt打开图形对象,有些只是标准的独立测试.我的目标是至少自动运行不需要打开窗口的测试,因为除非它等待用户输入然后失败.
注意:
我最好的猜测是将一个全局参数传递给TestSuite,以便每个测试都可以检查该值以了解它是否应该跳过.但在阅读unittest文档后,我找不到办法做到这一点.
我知道这个问题:如何在没有全局变量的情况下将参数发送到UnitTest,但我本来期望一些单元测试配置.
我正在编写我的第一个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为它编写单元测试?
最初我没有使用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包含函数的情况下完成我需要的东西?
我正在尝试首次使用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) assertEqual用unittestPython处理的最佳方法是什么,而不是对其进行测试,而不是==对其进行测试is?我想确保我拥有相同的对象,而不仅仅是比较相等的对象。这很重要,因为我正在使用的某些对象是具有古怪的比较运算符的堆类型。
所以我的理解是调用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
我想用py.test排除一个列表(大约5项)的测试.
我想通过命令行将此列表提供给py.test.
我想避免修改源代码.
怎么做?
在我的UnitTest目录中,我有两个文件,mymath.py和test_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-unittest ×10
python ×9
python-3.x ×2
unit-testing ×2
c++ ×1
cppunit ×1
decorator ×1
django ×1
exception ×1
pyqt ×1
pytest ×1
scons ×1
selenium ×1
testing ×1