我使用python unittest模块做了一些测试; 但是,这是非常重复的.
我有很多数据要反复运行相同的测试,检查是否正确.但是,我必须为每个人定义一个测试.
例如,我想做类似的事情.我知道我可以使用生成器(在此处的先前线程中找到它).但是有没有替代品,甚至可能使用不同的测试模块?
任何建议都会很棒.
import unittest
class TestData(unittest.TestCase):
def testNumbers(self):
numbers = [0,11,222,33,44,555,6,77,8,9999]
for i in numbers:
self.assertEqual(i, 33)
Run Code Online (Sandbox Code Playgroud) 我过去几周一直在研究一个Django项目,而且一帆风顺.我使用Django的unittest库来测试所有内容,结果显示在控制台中.
然而,经过一些研究,看起来像pydev提供了设施PyUnit.我使用Eclipse,我认为我只是能够将单元测试传输到PyUnit中,但我没有任何运气,或者找到文档来做到这一点.
如何在eclipse中的PyUnit视图中运行我的单元测试?
目前,我使用以下方法在eclipse中运行我的所有测试:
manage.py test
Run Code Online (Sandbox Code Playgroud)
谢谢!
我正在测试一个Flask应用程序(Flask 0.9),特别是我有一个会话夹具,我想以文档化的方式运行,就像这样(我理解):
from flask import Flask, session
app = Flask(__name__)
@app.route('/', methods=['POST'])
def m():
logging.error(session) # expect {'x': 1}
return ""
with app.test_request_context() as trc:
with app.test_client() as c:
with c.session_transaction() as sess:
sess['x'] = 1
c.post()
Run Code Online (Sandbox Code Playgroud)
这按预期工作,输出如下:
ERROR:root:<SecureCookieSession {'x': 1}>
Run Code Online (Sandbox Code Playgroud)
不幸的是我遇到了意外的结果,其中会话数据没有在端点函数中设置,即输出是这样的:
ERROR:root:<SecureCookieSession {}>
Run Code Online (Sandbox Code Playgroud)
只有从我的单元测试框架运行时才会出现此问题.就目前情况而言,我无法用堕落的情况重现这个问题,尽管我已经做了相当大的努力,其中有一些努力.重要的是我已经包括在内,itsdangerous并Google App Engine testbed期待其中一个可能是原因.
在我自己的系统上,我已经超越了要点,几乎完全复制了我的单元测试框架,试图将其隔离开来.同样,我从测试框架中删除了越来越多的相关代码.到目前为止,我无法想到退化案例与我可能影响结果的精简框架之间的差异.我已经遍历了c.post()pdb中的调用来尝试找出这种恶意的原因,但还没有收集任何有用的见解.
这就是说,我会对这个问题可能存在的方向或建议表示感谢.什么可能影响Werkzeug的背景,以至于session_transaction没有被尊重?
我是python测试的新手,并且在unittest,pytest和nose nose之间选择了一些困难.我正在构建一个测试库,它需要:安装一个更改conf重启deamons的软件包,并在Linux机器上取消传输软件包.哪三个测试框架最好?
在测试结束时,我非常希望:n测试Suceeded n测试Skiped n测试失败
你能提供一些建议吗?
干杯
我有一个扩展unittest.TestCase的基类,我想修补那个基类,这样扩展这个基类的类也会应用补丁.
代码示例:
@patch("some.core.function", mocked_method)
class BaseTest(unittest.TestCase):
#methods
pass
class TestFunctions(BaseTest):
#methods
pass
Run Code Online (Sandbox Code Playgroud)
修补TestFunctions该类直接工作,但修补BaseTest类不会改变some.core.functionin 的功能TestFunctions.
有人可以帮我解决这个错误信息:
Could not find a version that satisfies the requirement unittest
Run Code Online (Sandbox Code Playgroud)
我安装了最新的Python和PyCharm并尝试安装包单元测试但是出现上述错误.到目前为止,我使用Python的经历有点像dll地狱......
我试图用unittest脚本执行一些selenium但我得到以下错误
Starting at: "Sat Dec 07 14:43:17 2013"
E
======================================================================
ERROR: test_template (__main__.ManageTemplates)
----------------------------------------------------------------------
Traceback (most recent call last):
File "template.py", line 70, in tearDown
self.driver.quit()
File "C:\Program Files (x86)\Python27\lib\site-packages\selenium-2.38.1-py2.7.egg\selenium\webdriver\firefox\webdriver.py", line 66, in quit
RemoteWebDriver.quit(self)
File "C:\Program Files (x86)\Python27\lib\site-packages\selenium-2.38.1-py2.7.egg\selenium\webdriver\remote\webdriver.py", line 454, in quit
self.execute(Command.QUIT)
File "C:\Program Files (x86)\Python27\lib\site-packages\selenium-2.38.1-py2.7.egg\selenium\webdriver\remote\webdriver.py", line 162, in execute
response = self.command_executor.execute(driver_command, params)
File "C:\Program Files (x86)\Python27\lib\site-packages\selenium-2.38.1-py2.7.egg\selenium\webdriver\remote\remote_connection.py", line 350, in execute
return self._request(url, method=command_info[0], data=data)
File "C:\Program Files (x86)\Python27\lib\site-packages\selenium-2.38.1-py2.7.egg\selenium\webdriver\remote\remote_connection.py", line 381, in _request
self._conn.request(method, parsed_url.path, data, headers) …Run Code Online (Sandbox Code Playgroud) 我怎么python setup.py test去上班? - 当前输出:
$ python setup.py test # also tried: `python setup.py tests`
/usr/lib/python2.7/distutils/dist.py:267: \
UserWarning: Unknown distribution option: 'test_suite'
warnings.warn(msg)
usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
or: setup.py --help [cmd1 cmd2 ...]
or: setup.py --help-commands
or: setup.py cmd --help
error: invalid command 'test'
Run Code Online (Sandbox Code Playgroud)
from distutils.core import setup
if __name__ == '__main__':
setup(name='foo', version='0.1', package_dir={'foo': 'utils'},
test_suite='tests')
Run Code Online (Sandbox Code Playgroud)
from unittest import TestCase, main as unittest_main
class TestTests(TestCase):
def setUp(self):
pass
def …Run Code Online (Sandbox Code Playgroud) 我试图通过pudb调试器调试一些单元测试时遇到一些麻烦.
测试运行良好的python,但我没有运气与他们运行pudb.
我解决了这个问题,得到以下示例代码:
class Math:
def pow(self, x, y):
return x ** y
import unittest
class MathTest(unittest.TestCase):
def testPow23(self):
self.assertEquals(8, Math().pow(2, 3))
def testPow24(self):
self.assertEquals(16, Math().pow(2, 4))
if __name__ == '__main__':
unittest.main()
Run Code Online (Sandbox Code Playgroud)
测试运行良好:
$ python amodule.py
.
----------------------------------------------------------------------
Ran 2 tests in 0.001s
OK
Run Code Online (Sandbox Code Playgroud)
但如果通过pudb运行,它会给我输出:
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
Run Code Online (Sandbox Code Playgroud)
我试着使用运行pudb amodule.py,也有python -m pudb.run amodule.py,但它没有什么区别-没有测试是在一个或另一种方式运行.
我应该做一些与使用pudb调试单元测试不同的东西吗?
在Flask-SqlAlchemy中测试模型类时,我们如何模拟该方法.query.filter_by()以返回模拟模型对象的列表?
假设我们有一个模型类,如下面的代码
from flask.ext.sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class SomeModel(db.Model):
# more column mapping and methods go here
Run Code Online (Sandbox Code Playgroud)
然后在我们的Flask代码中调用
SomeModel.query.filter_by(...)
Run Code Online (Sandbox Code Playgroud)
在我们的测试代码,使用Python的单元测试模型与嘲讽,我们要嘲笑filter_by()调用,以便它在我们的设计测试案例返回模型对象的列表.
我们怎么做到这一点?
PS
我的谷歌搜索只发现了这个相关的帖子 ; 虽然@patch("flask_sqlalchemy.SignallingSession", autospec=True)在课程开始时申请不适合我.
我还尝试将函数模拟为下面的代码片段
@patch('app.model.some_model.SomeModel.query.filter_by')
def test_some_case(self, filterbyMOCK):
# more test logic goes here
Run Code Online (Sandbox Code Playgroud)
并且代码在启动时立即出错
RuntimeError: application not registered on db instance and no application bound to current context
Run Code Online (Sandbox Code Playgroud)
来自PyCharm IDE的完整错误如下面的快照.
Traceback (most recent call last):
File "/home/namgivu/NN/code/someproject-cloud/venv/local/lib/python2.7/site-packages/mock/mock.py", line 1297, in patched …Run Code Online (Sandbox Code Playgroud) python-unittest ×10
python ×8
flask ×2
unit-testing ×2
distutils ×1
django ×1
eclipse ×1
firefox ×1
mocking ×1
nose ×1
pudb ×1
pydev ×1
pytest ×1
python-2.7 ×1
python-mock ×1
setup.py ×1
sqlalchemy ×1
web2py ×1