web.py 应用程序上的 Pytests 未覆盖方法代码

2023-11-29

首先,很抱歉,如果术语不是 100% 正确,或者有些东西没有 100% 有意义,我对 Web 应用程序开发和在堆栈溢出上发布的文章还很陌生。

我有一个 web.py 应用程序,需要使用 pytest 测试其功能并生成代码覆盖率报告pytest-cov。我让测试正常工作并对响应进行断言,但是当我生成代码报告时,方法内的所有代码行都被暴露,因此测试覆盖率非常低(23%)

我运行成功pytest --cov通过 cmd 在我的存储库中并获取其中的覆盖率结果。但后来我尝试使用coverage run -m pytest test_Server.py和跑步coverage report以获得更多详细信息。

在这份报告中,我可以看到我丢失了哪些代码行,并且除了每个方法/类的定义之外,我丢失了所有代码行。

我尝试的另一件事是pytest --cov=Server.py,然后给我错误

Coverage.py warning: Module Server.py was never imported. (module-not-imported)
Coverage.py warning: No data was collected. (no-data-collected)
WARNING: Failed to generate report: No data to report.

服务器.py

import os

import web


URLS = ("/", "Index")

APP = web.application(URLS, globals())


class Index:
    """
    Just a test echo server.
    """

    def POST(self):
        web.header("Access-Control-Allow-Origin", "*")
        data = web.data()

        return data

测试服务器.py


from paste.fixture import TestApp
import pytest
import os
import sys

sys.path.insert(1,(os.path.join(sys.path[0],'..'))) #adding parent path to import server script
import Server as lm
from Server import APP as app, Index

host = "localHost:9999"


class TestRig():
    def test_server_setup(self):
        middleware = []
        testApp = TestApp(app.wsgifunc(*middleware))
        try:
            r = testApp.post("http://%s/" %host)
            print ("request:", r.status)
            assert r.status ==  200

        except TypeError:
            print ("Request failed. Status:"+ r.status)
            raise

这是我当前正在运行的一个非常简化的版本,我设法以某种方式使测试正常工作并正确断言响应。

我期望测试覆盖方法内的代码,但实际输出告诉我只覆盖了方法的定义,没有其他内容。


感谢@hoefling,我发现了两件事:

  1. 使用时Web.py,你需要使用paste.fixture用于测试代码的库,requests即使您可以断言和使用 get/post 方法,库也不会覆盖您的代码(这就是为什么我一开始的代码覆盖率如此糟糕)。

  2. 使用 pytest-cov (或coverage.py)时,请按如下方式进行调用:pytest --cov=name_of_your_script_to_cover --cov-report=term-missing --cov-report=html以避免Failed to generate report: No data to report.错误(另外还可以获得一个不错的 HTML 报告来查看代码覆盖率)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

web.py 应用程序上的 Pytests 未覆盖方法代码 的相关文章

随机推荐

  • 日期时间到数字以及向后转换

    R 中的日期 时间我有这个日期 2016 10 29 15 00 00 我想将其转换为数字并向后转换为我的相同日期和时间 我用它来将其转换为数字 as numeric as POSIXct 2016 10 29 15 00 00 我怎样才能
  • 如何在pyspark中使用多行选项将数据帧保存到json文件中

    在 Pyspark 中 我想将数据帧保存为 json 文件 但格式如下 说这是我的数据框 gt gt gt rdd1 show f1 f2 AAAAAAAAAA 99999 BBBBBBBBB 99999 CCCCCCCCC 99999 如
  • 在 FirebaseDatabase.getReference() 中获取 NPE

    我在应用程序启动时在生产版本中获得 NPE 并且在使用 adb 重新安装后仅获得一次 NPE Caused by java lang NullPointerException Attempt to invoke interface meth
  • 使用 DecorlatedJitterBackoff 的最大重试次数

    我正在使用 polly DecorlatedJitterBackoff 策略来重试 http 请求 我的用例是 当 timeSpan 达到 300 秒时 它应该每 300 秒重试 int maximum 次数 我正在尝试使用以下代码来实现此
  • 将 JPanel 中的 JLabel 定位在图像下方

    我想将给定示例中的文本移动到图像和形状下方 请帮我做一下 package test import java awt BasicStroke import java awt Graphics import java awt Graphics2
  • RestSharp 身份验证器遵循 302 重定向

    我正在尝试使用 RestSharp 向 API 发出请求 通过将请求重定向到登录服务器 使用基本凭据进行身份验证 获取 cookie 然后重定向回 API 来保护此 API 恐怕我无法控制这个 所以请求的顺序是 Request Respon
  • Swift:使用 WKWebView 的 createPdf 创建 pdf

    Edit 在找到问题 2 的解决方案后 并且给人的印象是问题 1 没有简单的 开箱即用的解决方案 我决定关闭这个问题 而专门针对分页问题创建另一个问题 我有两个问题WKWebViews createPDF configuration com
  • Threejs 拖动点

    我必须生成大量可以单独拖动的对象 此外 这些物体仅限于平面形状 例如矩形或圆形 起初 我使用简单的 CircleGeometries 将其放置在另一个几何图形 平面 内 拖动它们也很容易 但正如预期的那样 大约 200000 个它们的性能非
  • VSTS Microsoft 托管代理:虚拟机大小

    根据https github com MicrosoftDocs vsts docs blob master docs pipelines agents hosted mdMicrosoft 托管代理的虚拟机大小为 目前使用 Microso
  • 为什么 CSS 选择器/HTML 属性首选破折号?

    过去我总是使用下划线来定义class and idHTML 中的属性 在过去的几年里 我改用破折号 主要是为了使自己与社区趋势 不一定是因为它对我有意义 我一直认为破折号有更多的缺点 但我没有看到它的好处 代码完成和编辑 大多数编辑器将破折
  • 优化多个文件的并行处理

    我有一个程序处理很多文件 其中每个文件需要完成两件事 首先 读取并处理文件的某些部分 然后生成结果MyFileData被存储 第一部分可以并行 第二部分则不能 按顺序执行所有操作非常慢 因为 CPU 必须等待磁盘 然后它会工作一点 然后发出
  • 为什么代码在 VB.net 中不起作用,但在 VBA 中却可以;获取对象

    VBA 代码效果很好 Sub testVBA Dim wb As Object Lotus123 Document Set wb GetObject S Temp T 0375D WK3 Lotus123 Workbook End Sub
  • Opscode Chef 注册节点时请求实体太大

    我正在注册一个在运行列表中搜索其他节点属性的节点 问题是当节点信息太大而无法通过 HTTP 放在服务器上时 然后 Chef client 打印一条 FATAL Net HTTPServerException 413 Request Enti
  • 为什么 gets() 不消耗整行输入?

    我正在尝试使用gets 从用户那里获取一个字符串 但程序似乎直接传递过来gets 用户提供输入时不会有任何停顿 为什么是gets 什么也没做 char name 13 printf Profile name gets name printf
  • 模拟二元交叉(SBX)交叉运算符示例[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我在一个研究团队中工作 解决多目标工程问题 我专注于NSGA II算法 但现在我陷入困境 我需要了解 SBX 交叉如何与数值示例一起工作 以便我可以
  • 如何防止 Less 尝试编译 CSS calc() 属性?

    The Less我正在使用的编译器 橙色比特 and 无点1 3 0 5 正在积极翻译 body width calc 100 250px 1 5em into body width calc 151 5 这显然是不希望的 我想知道是否有一
  • 移动控件时阻止表单滚动

    我有一个打开自动滚动的表单 并且表单中有一个用户可编辑区域 用户可以调整控件大小或移动控件 移动控件时 如果它们移出窗体的工作区 则会显示滚动条 这是我的意图 现在 表单将自动向下滚动 因此当用户不释放鼠标时 控件将继续向下移动 这显然不是
  • 用值填充张量中的特定索引

    我是张量流初学者 我创建了这个张量 z tf zeros 20 2 tf float32 我想改变索引的值z 2 1 and z 2 2 to 1 0而不是零 我怎样才能做到这一点 你什么exactly无法询问有两个原因 z是一个常数张量
  • 多个模板中的 Twig Assetic 样式表

    我正在尝试将样式表添加到数组中 以便当树枝模板延伸到第二层和第三层时 聚合的样式将继续下去 这个主题是相关的跨继承模板组合资产资源 From 配置 yml 我做了一个全局数组mystyles这样我们就可以在渲染过程中 冒泡 时添加到必要的样
  • web.py 应用程序上的 Pytests 未覆盖方法代码

    首先 很抱歉 如果术语不是 100 正确 或者有些东西没有 100 有意义 我对 Web 应用程序开发和在堆栈溢出上发布的文章还很陌生 我有一个 web py 应用程序 需要使用 pytest 测试其功能并生成代码覆盖率报告pytest c