目录结构如下
- 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: 发回复前请确认方案可行哦
问题解决了,就像 @zhuangzhuang1988 给的代码一样:
import unittest
suite = unittest.TestLoader().discover("tests")
unittest.TextTestRunner(verbosity = 2).run(suite)
把结果整理后贴在这里,希望可以帮到和我一样的初学者 :)
1
BiggerLonger 2016-01-04 20:54:10 +08:00
pip install nose
|
2
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 用的是相对路径么? |
3
lululau 2016-01-04 21:52:17 +08:00
|
4
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 |
5
zhuangzhuang1988 2016-01-05 09:29:06 +08:00 1
import unittest
tests = unittest.TestLoader().discover('test') unittest.TextTestRunner(verbosity=2).run(tests) |