Python unittest 如何运行子目录下的测试用例集

2016-01-04 20:20:32 +08:00
 feng32

目录结构如下

- module_a.py
- module_b.py
- test-suite.py
- tests/
-     test_a.py
-     test_b.py

请问如何在不使用命令行(它会自动设置 PATH )的情况下,让测试用例跑通?
- 保证 test_a.py 可以 import module_a.py
- 保证调用 python test-suite.py 就可以成功调用所有测试用例
- 保证仅使用 Python 标准库中的东西,无额外依赖

本来以为应该自己能解决的,但是搞了一个多小时还没搞定。在此请教 Python 高手。
PS: 发回复前请确认方案可行哦

6352 次点击
所在节点    Python
5 条回复
BiggerLonger
2016-01-04 20:54:10 +08:00
pip install nose
ahxxm
2016-01-04 21:02:13 +08:00
发回复前谁知道可行不可行啊

a) 你得把这项目打包成 project 再 pip install 之才可以 import project.module_a
b) 你 tests 目录里没有__init__.py
c) 装个 nose 不会怀孕,又不是项目本身的依赖, 2016 年(没拼错吧)了还不用 virtualenv ?

另外你的 test_a.py 里如果需要调用 tests/下面的东西, os.path 或者 os.Path 用的是相对路径么?
lululau
2016-01-04 21:52:17 +08:00
mengzhuo
2016-01-04 23:24:04 +08:00
楼上说得都没啥问题,但是我司的某个项目结构恰好是这样的,没有任何依赖

- test.py
- module
|- a
|- b
-testcases
|-test_a
|-test_b

楼主基础不牢啊
sys.path 第一个就是当前目录,所以在 test_a 里写 import module_a 肯定可以正常执行的
然后你就可以在 test-suite.py 里用 lululau 说的 discover 方法
单独跑 test_a 可以用 python -m unittest testcases.test_a
zhuangzhuang1988
2016-01-05 09:29:06 +08:00
import unittest
tests = unittest.TestLoader().discover('test')
unittest.TextTestRunner(verbosity=2).run(tests)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/248302

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX