我正在构建一个涉及一些非django功能的应用程序。 我有一个应用程序'机智'在源目录下,这是一个django应用程序,并且具有被延迟的测试用例。
src/wit/ test_django_file1.py, test_django_file2.py etc.
但是还有一些测试用例未被发现或运行
src/utils/ test_nondjango1.py and test_nondjango2.py
src / utils不是已安装的应用列表中的django应用程序
当我跑步时
cd src/
python manage.py test
src / utils下的测试未被发现或运行
我正在使用django jenkins报告覆盖率来获取报道。 我希望通过一次调用来调用所有测试用例,以便覆盖所有代码覆盖率报告。
否则我想知道如果不能单独调用如何以便我可以运行所有测试用例。
如何调试它,并找出正在探索的目录。
答案 0 :(得分:1)
你的utils dir是一个有效的python包(有__init__.py
吗?)。
并且,它下面的模块是否可导入?例如,您可以执行以下操作:
cd root_dir/
python -c "from src.utils import test_nondjango1"
如果上面提到ImportError
,那么将其设为可导入是您可以进行测试的一种方式"可被发现"。另一种方法是在运行测试时明确指定目录:
python manage.py tests src.wit src/utils/
这为test runner:src.wit
提供了两个标签,其中包含完整的Python点线路径和src/utils/
,它是相对目录。
[Django docs state]它" unittest模块的built-in test discovery"。链接文档中的第一段说:
Unittest支持简单的测试发现。为了兼容 通过测试发现,所有测试文件必须是模块或包 (包括命名空间包)可从顶级目录导入 项目(这意味着他们的文件名必须有效 标识符)。
测试发现在TestLoader.discover()中实现,但也可以 从命令行使用......
为了进一步澄清,discover()
method docs说:
发现(start_dir,pattern =' test * .py',top_level_dir =无)
通过从子目录中递归到子目录来查找所有测试模块 指定启动目录,并返回包含的TestSuite对象 他们。仅加载与模式匹配的测试文件。 (使用shell 样式模式匹配。)只有可导入的模块名称(即 将加载有效的Python标识符。
所有测试模块必须可从项目的顶层导入。 如果开始目录不是顶级目录,那么顶部 级别目录必须单独指定。
如果导入模块失败,例如由于语法错误,那么 这将记录为单个错误,发现将继续。 如果导入失败是由于SkipTest被引发,那么它将是 记录为跳过而不是错误。