据我所知,如果测试失败,pytest应该向unittest.TestCase.subtest()提供参数信息。下面是与我的代码类似的内容: class TestStuff(unittest.TestCase):
def test_foo(self):
for i in range(0, 100):
with self.subTest(msg = "seed", i = i):
np.random.seed(i)
n = np.random.randint(0, 3
我对使用unittest的subTest循环一些非常类似的测试很感兴趣。我发现,当我以这种方式运行在pytest (或nosetests)下以这种方式编写的测试时,输出不包含有关单个故障的信息。
import unittest
class NumbersTest(unittest.TestCase):
def test_even(self):
"""
Test that numbers between 0 and 5 are all even.
"""
for i in r
我编写了一个代码,它将目录列表作为输入,并为输出提供一个字典,其中包含没有复制的文件(即使名称不同):
Key = MD5 on the bits of the file.
Value = List of all the locations that the file is in.
问题是,我需要使用模拟进行单元测试,我不知道应该在哪里使用模拟,以及如何正确地使用它进行测试。
我试着模仿os.walk和模拟文件来建立一个假的文件系统,但是它不起作用!
当我尝试使用我的MD5哈希函数时,它会抛出> afile = open(path, 'rb')。
File
我的代码:
import unittest
class MyTestCase(unittest.TestCase):
def setUp(self):
print("setUp")
def tearDown(self):
print("tearDown")
def test_something(self):
for i in range(4):
with self.subTest():
self.assertEqual(Tru
我正在尝试将py.test的与我的单元测试结合在一起,与unittest一起使用。我在项目的顶层(如描述的)将几个夹具放在conftest.py文件中,用@pytest.fixture装饰它们,并将它们的名称作为需要它们的测试函数的参数。
安装程序注册正确,如py.test --fixtures test_stuff.py所示,但是当我运行py.test时,我得到了NameError: global name 'my_fixture' is not defined。这似乎只有在我使用unittest.TestCase-but的子类时才会发生-- py.test文档似乎说它与un
我已经写了一个相对简单的网页应用程序使用的标准和定制的形式验证器和WTForms。我现在正在尝试学习Python测试。我编写了下面的tests.py文件,它可以很好地处理unittest,但是具有冗余性。有更好的,更有效的,更多的丙酮(DNRY)的方式来做这件事吗?我看过一些最远的教程,想知道固定装置是否有帮助,但我不能完全理解它们。我想有一种更多的节奏式方法可以用单位测试来完成。似乎我需要一个方法,我可以传递不同的切分参数,但我不知道如何做到这一点。
from fly_app import app
import unittest
class FlaskTestCase(unittest.T
py版本:Python 3.6.3 上下文:我使用HtmlTestRunner和unittest为REST API获得整洁的部署后测试报告。 问题:当我运行测试时,我确实分离了所有东西,但是子测试从测试继承了它们的名称1:1。 html中的示例视图:Example view in html with errors 示例代码: import unittest
import HtmlTestRunner
class testBadRequest(unittest.TestCase):
def test_serviceOne_bad_request(self):
with
class MyTestCase(unittest.Testcase):
def setUp(self):
self.something = True
@pytest.fixture(autouse=True)
def MyTestMethod(self, frozentime):
fn(self.something) # self.something is NOT defined
如果我使用@pytest.fixture(autouse=True),我会从PyTest得到一些奇怪的行为。PyTest没有在调用测试方法之前调用我的se
关于Python unittest特性、subTest和skipTest之间的交互,我还没有找到一个明确的答案。
例如,测试它时,似乎在subTest上下文中调用skipTest时(Python3.4中的新特性),只有当前的subTest被跳过。允许围绕subTest的任何循环继续使用其他值。
from unittest import TestCase
class NumbersTest(TestCase):
def test_even(self):
"""
Test that numbers between 0 and 5 a
当使用python的unittest 时,我很困惑参数是如何在子测试中命名和作用域的。
上面的链接中给出的规范示例似乎意味着可以将with self.subtest()子句中使用的参数作为关键字参数传递给subTest()。供参考的例子如下:
class NumbersTest(unittest.TestCase):
def test_even(self):
"""
Test that numbers between 0 and 5 are all even.
"""
fo
我在运行测试套件时遇到了问题。我将pytest用于固定装置和测试排序,以及用于运行套件的单元测试。所有测试类都有参数(unittest.TestCase)
在测试所在的同一目录(文件夹/包)中执行的文件。我用命令执行TestSuite,pytest tests/test_suit.py。以下是test_suit.py:
import unittest
from unittest import TextTestRunner
from unittest import TestLoader
from tests.home_page.login_test import LoginTest
from
Distinguishing test iterations using subtests class NumbersTest(unittest.TestCase):
def test_even(self):
"""
Test that numbers between 0 and 5 are all even.
"""
for i in range(0, 6):
with self.subTest(i=i):
sel
我尝试测试的模块(使用pytest和pytest-mock)如下所示:
x.py
from a import ClassA
def a_func():
class_a = ClassA()
...
模块a.py:
import b
class ClassA:
...
测试:
def test_my_code(mocker):
import x
mock_of_b = mocker.patch.object(x.a, 'b')
...
或者简单的unittest:
import x
class MyTests(unittest.TestCase):
电流设置
使用
pytest 3.4.1
python 3.5及以上
这是我在tests/test_8_2_openpyxl.py下的测试用例
class TestSomething(unittest.TestCase):
def setUp(self):
# do setup stuff here
def tearDown(self):
# do teardown stuff here
def test_case_1(self):
# test case here...
我使用unittest样式编
当使用带有子测试和verbose=2的单元测试时,顶部失败测试的摘要缺少'FAIL\n‘。 例如,此测试(在Python 3.7中): import unittest
class TestThing(unittest.TestCase):
def test_thing1(self):
for i in range(10):
with self.subTest(i=i):
self.assertLess(i, 10)
def test_thing2(self):
for i
我有一个Python unittest.TestCase,有时会失败。要调试这一点,我希望自动运行它,直到它失败为止。我找到了,它看起来像我要找的东西,但是它明确地说
不幸的是,pytest- 无法使用unittest.TestCase测试类。这些测试将始终运行一次,不管-计数,并显示警告。
是否有与unittest类似的东西?
当我写这篇文章时,我突然意识到,一个简单的shell命令可能是解决方案:
while pytest ...
do
echo Sadly, it passed again
done
这是实际的解决方案吗,还是有某种python工具可以实现我想要的(在某种程度上可能