如何解决pytest:缺少如何开发基本pytest的逻辑
我写了这个基本功能:
def cons(a,b):
return (a,b)
def car(tuple_name):
return tuple_name[0]
def cdr(tuple_name):
return tuple_name[1]
print(car(cons(3,5)))
我想实现一个测试框架以开始正确测试我的功能。有人告诉我pytest是一个很好的起点。
通过阅读示例,我认为如果我要使用此代码实现pytest,它应该看起来像这样:
def cons(a,b)
def car(tuple_name):
return tuple_name[0]
def cdr(tuple_name):
return tuple_name[1]
def test_car(input1):
assert car(input1) == car(input1)
assert cdr(input1) == cdr(input1)
print(test_car((3,4)))
我知道这有两个(相关)问题:
- 运行代码时,它仅返回None
- 我没有正确地进行测试(因为断言car(input1)= car(input1)永远不会失败)。
那么有人可以告诉我我在做什么错,如何在这些函数中实现pytest。我还想知道我是否应该在这里建立一个类,但是我认为这是一个不同的问题。
解决方法
-
您应该通过以下命令运行测试:
python3 -m pytest test.py
-
您应该删除
print(test_car((3,4)))
-
您应该分别测试car和cdr功能
-
您应该由
@pytest.mark.parametrize
装饰器指定功能输入
带有car
功能测试的最终示例是这样的:
import pytest
def cons(a,b):
return (a,b)
def car(tuple_name):
return tuple_name[0]
def cdr(tuple_name):
return tuple_name[1]
@pytest.mark.parametrize("input1,output1",[((3,4),3),((5,5)])
def test_car(input1,output1):
assert car(input1) == output1
它有两个测试用例。第一个测试用例具有输入(3,4)
和输出3
。第二个输入为(5,4)
,输出为5
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。