当前位置: 首页 > 知识库问答 >
问题:

python 的 unittest 无法读取到测试脚本?

夹谷星剑
2023-10-12

目录结构如下:

(image_search_engine) ╭─pon@T4GPU ~/code/work/ponponon/image_search_engine  ‹master*› ╰─➤  tree testing                                        testing├── __init__.py├── resource│   ├── emoji001.jpg│   ├── emoji002.jpg│   ├── emoji003.jpg│   └── s.jpg├── test_meta.py└── test_sample.py

运行测试命令

╰─➤  python -m unittest testing----------------------------------------------------------------------Ran 0 tests in 0.000sOK

unittest 会读取所有 test 开头的 .py 文件,但是我的两个 test_meta.py 和 test_sample.py 居然没有被读取?

但是写成 python -m unittest testing.test_samplepython -m unittest testing.test_meta 是可以的,直接 python -m unittest testing 却不行,为什么?

共有2个答案

长孙兴德
2023-10-12

unit-test-discovery

Note

As a shortcut, python -m unittest is the equivalent of python -m unittest discover. If you want to pass arguments to test discovery the discover sub-command must be used explicitly.

看文档,一旦加参数就必须用 python -m unittest discover 的形式才能自动查找测试文件。如果要指定目录的话,可能应该是: python -m unittest discover testing

莘钧
2023-10-12

你的问题似乎在于你试图运行整个目录作为测试套件,但unittest模块并不会自动查找子目录中的测试用例。

当你运行 python -m unittest testing 时,unittest 模块会在当前目录(在这个例子中,是包含 testing 目录的父目录)中查找名为 unittest.py 或者以 test 开头的文件。然后,它会在这些文件中查找类,这些类要满足以下条件:

  • 它们是 unittest.TestCase 的子类。
  • 它们的名字以 Test 开头。
  • 它们不是私有的(即,它们的名称不以两个下划线 __ 开头)。

然后,unittest 会运行在这些类中找到的所有测试用例。

在你的例子中,unittest 没有找到任何满足这些条件的类,所以它没有运行任何测试,这就是为什么你看到 Ran 0 tests in 0.000s

你需要做什么呢?

  1. 确保你的测试类都在 unittest.py 或以 test 开头的文件中。
  2. 如果你的测试类在不同的文件中,确保你在 unittest.py 或以 test 开头的文件中导入它们。
  3. 确保你的测试类名以 Test 开头,并且不是私有的。

例如,你可以在 test_meta.pytest_sample.py 中分别有以下内容:

import unittestfrom your_module import YourClass  # 从你的应用中导入你需要测试的类class TestYourClass(unittest.TestCase):    def test_something(self):        # 在这里写你的测试代码        passif __name__ == '__main__':    unittest.main()

然后,在 testing 目录的父目录中创建一个 test_all.py 文件,内容如下:

import unittestfrom testing import test_meta, test_sample  # 导入你的测试模块if __name__ == '__main__':    unittest.main()

然后,运行 python -m unittest test_all,这应该会运行你的所有测试用例。

 类似资料:
  • 本文向大家介绍python的unittest测试类代码实例,包括了python的unittest测试类代码实例的使用技巧和注意事项,需要的朋友参考一下 nittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果。今天笔者就总结下如何使用unittest单元测试框架来进行

  • 问题内容: 我正在通过protobuf协议并使用HTTP Request Sampler测试一个项目。 目标应用服务器也是用Java编写的。 响应错误存在问题: “Could not read Protobuf message: Protocol message contained an invalid tag (zero).; nested exception is com.google.pro

  • 本文向大家介绍python unittest实现api自动化测试,包括了python unittest实现api自动化测试的使用技巧和注意事项,需要的朋友参考一下 项目测试对于一个项目的重要性,大家应该都知道吧,写python的朋友,应该都写过自动化测试脚本。 最近正好负责公司项目中的api测试,下面写了一个简单的例子,对API 测试进行梳理。 首先,编写restful api接口文件 testp

  • 本文向大家介绍python如何使用unittest测试接口,包括了python如何使用unittest测试接口的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python使用unittest 测试接口的具体代码,供大家参考,具体内容如下 1.首先使用 python 的requests 对接口进行测试 2.使用unittest调用接口,且对接口测试的结果进行统计 3.使用suite对c

  • 本文向大家介绍详解python单元测试框架unittest,包括了详解python单元测试框架unittest的使用技巧和注意事项,需要的朋友参考一下 一:unittest是python自带的一个单元测试框架,类似于java的junit,基本结构是类似的。 基本用法如下: 1.用import unittest导入unittest模块 2.定义一个继承自unittest.TestCase的测试用例类

  • 本文向大家介绍python单元测试unittest实例详解,包括了python单元测试unittest实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python单元测试unittest用法。分享给大家供大家参考。具体分析如下: 单元测试作为任何语言的开发者都应该是必要的,因为时隔数月后再回来调试自己的复杂程序时,其实也是很崩溃的事情。虽然会很快熟悉内容,但是修改和调试将是一件痛苦