python - 如何使用pytest在python中测试没有参数或返回的类的方法
问题描述
假设我有一个类,这个类有一些属性和一些方法。此方法没有任何参数或任何返回,它们仅通过使用“self”更改类的属性来工作。财产。如何测试这些类型的方法?
让我们创建虚构类 Foo 作为示例:
class Foo:
example_value = -1
def function_1(self,a,b):
self.attr1 = a
self.attr2 = b
self.function_2()
self.function_3()
self.function_4(self.example_value)
def function_2(self):
self.attr1 = self.attr1 + 50
self.attr2 = self.attr2 + 40
def function_3(self):
self.attr1 = self.attr1 * 2
self.attr2 = self.attr3 * 3
self.example_value = self.attr1 + self.attr3
def function_4(self,value):
if value == -1:
raise Exception('snippet')
为了测试这个类,我应该模拟什么?由于其中两个方法没有任何输入参数或返回,我如何跟踪类属性的值变化?我应该只模拟一个方法还是整个类?我怎样才能以简单的方式做到这一点pytest
?这段代码可以改变什么?添加一个简单的get_value()
会简化这个类的测试开发吗?
解决方案
您可以在调用方法之后验证属性,如下所示:
from unittest import TestCase
class TestFoo(TestCase):
def test_f1(self):
x = Foo()
x.function_1(10, 20)
self.assertEqual(x.attr1, 120)
self.assertEqual(x.attr2, 30)
self.assertEqual(x.attr3, 10)
self.assertEqual(x.example_value, 130)
def test_f4(self):
try:
Foo().function_4(1)
except Exception:
self.fail("function_4() raised Exception unexpectedly!")
def test_f4_error(self):
with self.assertRaises(Exception):
Foo().function_4(-1)
推荐阅读
- javascript - 从 TypeScript 操作 JSON
- web-scraping - 如何以外部用户身份从应用 PowerBI 获取数据
- wordpress - 如何将存储在数据库中的联系表格 7 值链接到特定用户 - Wordpress
- mysql - 你如何改变mysql中的哈希算法?
- linqpad - 使用 Util.Run 的 LINQPad 转储
- facebook - 使用 Facebook Audience Network 进行 Flutter admob 中介:如何自定义广告显示?
- java - 如何读取下面返回的 json 字符串为 resttemplate.exchange
- javascript - 如何在循环中淡入和淡出文本
- javascript - 从 Javascript 函数中提取 innerHTML
- sql - Azure 数据工厂:数据流中的简单 SQL 查询不返回任何内容