PyCharm Nosetests - 无法识别的测试

时间:2016-11-02 11:36:12

标签: python pycharm nose

我在PyCharm和nosetest集成中反复出现过各种形式的问题。

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

我已经搜索了很多很多SO答案,但仍然没有找到答案。

以下是该问题的当前复制品。测试的内容并不真正相关,但是它正在测试数据库接口周围的单例包装器。

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)

如果我右键点击测试&#34; test_basic_query&#34;我得到了上下文菜单选项:&#34;运行Nosetest test_basic_query&#34;并点击它确实运行测试,包括设置和拆解。

然而,右键单击其他测试只会显示&#34;运行test_db_wrapper&#34;选项。右键单击“项目”窗格中的文件也只提供此选项。

使用nosetests3可执行文件从命令行运行此文件甚至更奇怪。它运行所有三个测试,但不运行设置和拆卸。

注意我已尝试重新排序,重命名测试。我试过从object,nothing或unittest.TestCase继承。我有其他测试类看起来完全像这样,他们工作。

这只是一个例子,这种情况一直发生在我们身上。它似乎是随机的。

PyCharm版本是: PyCharm Community Edition 2016.1.4 Build#PC-145.1504,建于2016年5月25日 JRE:1.8.0_76-release-b198 amd64 JVM:JetBrains s.r.o的OpenJDK 64位服务器VM

2 个答案:

答案 0 :(得分:2)

到目前为止,我发现了阻止上述情况的事情:

  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和自动填充方法名称的生活更加复杂。

答案 1 :(得分:0)

如果以前无法识别它并创建了运行配置,则可能必须删除该运行配置,才能将其检测为测试而不是脚本。在下拉菜单中查看:

enter image description here

您应该找到现有运行确认的列表。如果Pycharm已经有一个带有您文件名的文件,它将被视为默认运行配置。 (这很好,因为它意味着您可以创建并保留自定义运行配置),但有时这意味着,如果您已经以脚本的形式运行了测试文件,则上下文菜单将不会恢复。 在该下拉菜单中进行编辑,您可以删除任何现有的运行配置。

相关问题