标签: python-unittest

如何为大量数据测试相同的断言

我使用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)

python unit-testing python-unittest

12
推荐指数
4
解决办法
4413
查看次数

有没有办法在eclipse中将Django的unittest挂钩到PyUnit?

我过去几周一直在研究一个Django项目,而且一帆风顺.我使用Django的unittest库来测试所有内容,结果显示在控制台中.

然而,经过一些研究,看起来像pydev提供了设施PyUnit.我使用Eclipse,我认为我只是能够将单元测试传输到PyUnit中,但我没有任何运气,或者找到文档来做到这一点.

如何在eclipse中的PyUnit视图中运行我的单元测试?

目前,我使用以下方法在eclipse中运行我的所有测试:

manage.py test
Run Code Online (Sandbox Code Playgroud)

谢谢!

eclipse django pydev python-unittest

12
推荐指数
1
解决办法
2092
查看次数

单元测试Flask会话 - 无法使用session_transaction重现失败

我正在测试一个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)

只有从我的单元测试框架运行时才会出现此问题.就目前情况而言,我无法用堕落的情况重现这个问题,尽管我已经做了相当大的努力,其中有一些努力.重要的是我已经包括在内,itsdangerousGoogle App Engine testbed期待其中一个可能是原因.

在我自己的系统上,我已经超越了要点,几乎完全复制了我的单元测试框架,试图将其隔离开来.同样,我从测试框架中删除了越来越多的相关代码.到目前为止,我无法想到退化案例与我可能影响结果的精简框架之间的差异.我已经遍历了c.post()pdb中的调用来尝试找出这种恶意的原因,但还没有收集任何有用的见解.

这就是说,我会对这个问题可能存在的方向或建议表示感谢.什么可能影响Werkzeug的背景,以至于session_transaction没有被尊重?

flask python-unittest

12
推荐指数
1
解决办法
1536
查看次数

unittest vs pytest vs nose

我是python测试的新手,并且在unittest,pytest和nose nose之间选择了一些困难.我正在构建一个测试库,它需要:安装一个更改conf重启deamons的软件包,并在Linux机器上取消传输软件包.哪三个测试框架最好?

在测试结束时,我非常希望:n测试Suceeded n测试Skiped n测试失败

你能提供一些建议吗?

干杯

python nose pytest python-unittest

12
推荐指数
1
解决办法
8277
查看次数

继承一个修补过的类

我有一个扩展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.

python python-2.7 python-mock python-unittest

12
推荐指数
2
解决办法
682
查看次数

unittest安装错误找不到满足要求的版本

有人可以帮我解决这个错误信息:

Could not find a version that satisfies the requirement unittest
Run Code Online (Sandbox Code Playgroud)

我安装了最新的Python和PyCharm并尝试安装包单元测试但是出现上述错误.到目前为止,我使用Python的经历有点像dll地狱......

python python-unittest

12
推荐指数
1
解决办法
1万
查看次数

Python Selenium 2.39和Firefox 26

我试图用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 firefox web2py selenium-webdriver python-unittest

11
推荐指数
1
解决办法
3067
查看次数

让`python setup.py test`语法工作?

我怎么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)

PROJ_NAME/setup.py

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)

PROJ_NAME /测试/ foo_test.py

from unittest import TestCase, main as unittest_main


class TestTests(TestCase):
    def setUp(self):
        pass

    def …
Run Code Online (Sandbox Code Playgroud)

python unit-testing distutils setup.py python-unittest

11
推荐指数
1
解决办法
2804
查看次数

如何用pudb调试器调试unittes?

我试图通过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调试单元测试不同的东西吗?

python pudb python-unittest

11
推荐指数
1
解决办法
1642
查看次数

如何在Flask-SqlAlchemy中模拟<ModelClass> .query.filter_by()

简单来说

在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 sqlalchemy mocking flask python-unittest

11
推荐指数
2
解决办法
5529
查看次数