我有一些测试数据,想为每个项目创建一个单元测试.我的第一个想法是这样做:
import unittest
l = [["foo", "a", "a",], ["bar", "a", "b"], ["lee", "b", "b"]]
class TestSequence(unittest.TestCase):
def testsample(self):
for name, a,b in l:
print "test", name
self.assertEqual(a,b)
if __name__ == '__main__':
unittest.main()
Run Code Online (Sandbox Code Playgroud)
这样做的缺点是它在一次测试中处理所有数据.我想在运行中为每个项目生成一个测试.有什么建议?
我一直在接受
没有发现任何测试
Pycharm中的错误,我无法弄清楚为什么我会得到它...这就是我对我的看法point_test.py:
import unittest
import sys
import os
sys.path.insert(0, os.path.abspath('..'))
from ..point import Point
class TestPoint(unittest.TestCase):
def setUp(self):
pass
def xyCheck(self,x,y):
point = Point(x,y)
self.assertEqual(x,point.x)
self.assertEqual(y,point.y)
Run Code Online (Sandbox Code Playgroud)
而这point.py,我正在尝试测试:
import unittest
from .utils import check_coincident, shift_point
class Point(object):
def __init__(self,x,y,mark={}):
self.x = x
self.y = y
self.mark = mark
def patched_coincident(self,point2):
point1 = (self.x,self.y)
return check_coincident(point1,point2)
def patched_shift(self,x_shift,y_shift):
point = (self.x,self.y)
self.x,self,y = shift_point(point,x_shift,y_shift)
Run Code Online (Sandbox Code Playgroud)
我的运行配置有问题吗?我看了这篇 SO帖子,但我仍然感到困惑.我的运行配置目前看起来像这样:
我想我只是明白我可能做错了什么?任何帮助将不胜感激,谢谢!
我刚刚"移植"了一个我正在写给PyCharm的Python包,并且在从IDE运行整个包的单元测试时遇到了一些麻烦.
在__init__.py包中,我的load_tests功能遍及包中的所有模块并加载相关的测试.它运行得非常出色:
$python -m unittest my_package
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试从PyCharm运行它时(通过选择Projects窗口中的顶级目录并按Ctrl + Shift + F10),我进入No tests were foundRun窗口,
...\python.exe ...\pycharm\utrunner.py .../my_package/ true
Testing started at ...
Process finished with exit code 0
Empty test suite.
Run Code Online (Sandbox Code Playgroud)
在控制台窗口中.
我快速浏览了PyCharm utrunner.py,它似乎正在寻找具有某种模式的模块(从测试开始).我想保留目前的香草方法.如何配置PyCharm使用load_tests从__init__.py在修改尽可能少的代码?
顺便说一句,各个模块的测试套件从PyCharm运行得很好.
使用PyCharm 3.1 Community Edition,Python 2.7.
先感谢您.