当前位置: 首页 > 工具软件 > CherryPy > 使用案例 >

cherrypy@Tutorial 12: Using pytest and code coverage

公孙俭
2023-12-01

Pytest

先回顾一下 Tutorial 2的代码:

import random
import string

import cherrypy


class StringGenerator(object):
    @cherrypy.expose
    def index(self):
        return "Hello world!"

    @cherrypy.expose
    def generate(self):
        return ''.join(random.sample(string.hexdigits, 8))


if __name__ == '__main__':
    cherrypy.quickstart(StringGenerator())

将内容保存到 tut12.py文件中

现在开始写测试代码:

import cherrypy
from cherrypy.test import helper

from tut12 import StringGenerator

class SimpleCPTest(helper.CPWebCase):
    @staticmethod
    def setup_server():
        cherrypy.tree.mount(StringGenerator(), '/', {})

    def test_index(self):
        self.getPage("/")
        self.assertStatus('200 OK')
    def test_generate(self):
        self.getPage("/generate")
        self.assertStatus('200 OK')

将内容保存到test_tut12.py文件中。然后运行:

$ pytest -v test_tut12.py

注意:你需要先安装pytest. 执行命令:sudo pip3 install pytest

我们现在有一个简洁的方法,我们可以进行我们的应用程序制作测试。

添加代码覆盖测试

要获得代码覆盖率,只需运行即可

$ pytest --cov=tut12 --cov-report term-missing test_tut12.py

注意,需要先安装pytest, 执行命令sudo pip3 install pytest-cov

这告诉我们缺少一行。当然这是因为只有在直接启动python程序时才会执行。我们可以简单地更改tut12.py中的以下行:

if __name__ == '__main__':  # pragma: no cover
    cherrypy.quickstart(StringGenerator())

当您重新运行代码覆盖率时,它现在应该显示100%。

在CI中使用时,您可能希望将CodecovLandscapeCoverall集成到项目中,以便随时间存储和跟踪覆盖率数据。

 类似资料:

相关阅读

相关文章

相关问答

相关文档