繁体   English   中英

使用Python WebTest进行功能测试

[英]Functional testing with Python WebTest

我是使用Python WebTest进行功能测试的新手,请多多包涵

我正在查看https://webtest.readthedocs.org/en/latest/webtest.html ,所以我尝试了建议的代码来提出请求:

    app.get('/path', [params], [headers], [extra_environ], ...)

好吧,对我来说看起来很简单。 我在myapp文件夹中创建了一个名为test_demo.py的文件:

    from webtest import TestApp

    class MyTests():
        def test_admin_login(self):
           resp = self.TestApp.get('/admin')
           print (resp.request)

现在这是我坚持的地方,我应该如何运行此test_demo.py? 我尝试过输入bash

    $ bin/python MyCart/mycart/test_demo.py test_admin_login

但这没有显示任何结果。

我敢打赌我全都错了,但是文档并没有太大帮助,或者我只是很慢。

糟糕,您缺少几个步骤。

您的程序不执行任何操作,因为您没有告诉它执行任何操作,只是定义了一个类。 因此,让我们告诉它做点什么。 我们将使用unittest软件包使事情自动化一些。

import unittest
from webtest import TestApp

class MyTests(unittest.TestCase):
    def test_admin_login(self):
       resp = self.TestApp.get('/admin')
       print (resp.request)

if __name__ == '__main__':
    unittest.main()

运行它,我们看到:

E
======================================================================
ERROR: test_admin_login (__main__.MyTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "test_foo.py", line 6, in test_admin_login
    resp = self.TestApp.get('/admin')
AttributeError: 'MyTests' object has no attribute 'TestApp'

----------------------------------------------------------------------
Ran 1 test in 0.000s

FAILED (errors=1)

好的,所以我们需要一个应用程序进行测试。 在哪里得到一个? 通常,您通常需要通过config.make_wsgi_app()main config.make_wsgi_app()中创建的WSGI应用程序。 最简单的方法是加载它,就像运行应用程序时pserve development.ini所做的一样。 我们可以通过pyramid.paster.get_app()做到这一点。

import unittest
from pyramid.paster import get_app
from webtest import TestApp

class MyTests(unittest.TestCase):
    def test_admin_login(self):
        app = get_app('testing.ini')
        test_app = TestApp(app)
        resp = test_app.get('/admin')
        self.assertEqual(resp.status_code, 200)

if __name__ == '__main__':
    unittest.main()

现在只需要一个类似于您的development.ini的INI文件,即可进行测试。 您可以只复制development.ini直到需要设置任何用于测试的设置。

希望这给你一个起点,以了解更多的unittest包。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM