gpt4 book ai didi

python - PyCharm Nosetests - 无法识别的测试

转载 作者:行者123 更新时间:2023-12-01 03:36:04 26 4
gpt4 key购买 nike

我在使用 PyCharm 和 Nostest 集成时反复遇到过各种形式的此问题。

右键单击无法识别某些测试或类/模块根本不包含 Nose 测试。

我已经搜索了很多很多答案,但仍然没有弄清楚这一点。

这是该问题的当前重现。测试的内容并不真正相关,但它正在测试围绕数据库接口(interface)的单例包装器。

class MyDBTest(unittest.TestCase):

def setup(self):
self.db = db_utils.get_connection(constants)

def teardown(self):
db_utils.truncate_all_my_tables(self.db)
self.db.commit()
self.db.close()

def test_same_instance(self):
other_instance = db_utils.get_connection(constants)
assert other_instance is self.db

def test_basic_query(self):
cur = self.db.cursor()
sql = "SELECT %s"
cur.execute(sql, "Test")
assert cur.rowcount == 1, "Expected one row, got <{0!s}>".format(cur.rowcount)

def test_reopen_connection(self):
self.db.close()
self.db = db_utils.get_connection(constants)
cur = self.db.cursor()
sql = "SELECT %s"
cur.execute(sql, "Test")
assert cur.rowcount == 1, "Expected one row, got <{0!s}>".format(cur.rowcount)

如果我右键单击测试“test_basic_query”,我会看到上下文菜单选项:“运行 Nosetest test_basic_query”,然后单击它确实会运行测试,包括设置和拆卸。

但是,右键单击其他测试仅显示“运行 test_db_wrapper”选项。右键单击“项目” Pane 中的文件也仅提供此选项。

使用 notests3 可执行文件从命令行运行此文件会产生更奇怪的结果。它运行所有三个测试,但不运行安装和拆卸。

注意我已尝试重新排序、重命名测试。我尝试过从 object、nothing 或 unittest.TestCase 继承。我还有其他与此完全相同的测试类,并且它们可以工作。

这只是一个例子,这种情况经常发生在我们身上。它看起来只是随机的。

PyCharm 版本是:PyCharm 社区版 2016.1.4内部版本 #PC-145.1504,建于 2016 年 5 月 25 日JRE:1.8.0_76-release-b198 amd64JVM:JetBrains s.r.o 的 OpenJDK 64 位服务器 VM

最佳答案

到目前为止,我发现可以防止上述情况发生:

  1. 测试类名称应以“Test”开头,例如“TestFoo”
  2. 测试文件名应以 test 开头,例如 test_my_class.py
  3. 测试方法应以单词 test 开头,例如“test_no_results(self)”。同样,非测试方法不应包含测试、设置或拆卸(为了简单起见)- create_test_data(self):例如
  4. PyCharm 可能有点奇怪,可能需要一段时间才能识别您对测试类所做的更改,因此,如果您通过从命令行执行“nosetests”来验证测试(包括设置和拆卸)运行但不起作用在 PyCharm 中尝试重新启动 PyCharm 并清除缓存。
  5. 您不需要扩展unitest.TestCase来使用Nosetests。事实上,这样做可能会让您在编辑时的 itelisense 和自动完成方法名称方面变得更加复杂。

关于python - PyCharm Nosetests - 无法识别的测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40378978/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com