Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pytest、用户输入和异常_Python_Pytest - Fatal编程技术网

Python pytest、用户输入和异常

Python pytest、用户输入和异常,python,pytest,Python,Pytest,我对单元测试非常陌生,所以很抱歉我的新手问题。 我编写了一个带有一个实例属性“name”的小类 这里的目标是在实例化类时,如果没有传递“name”参数,则要求用户输入,并验证名称的格式是否符合预期 以下是类定义: class客户: def uuu init uuuu(self,name=None): self.name=名称 @财产 def名称(自我): 返回self.\u name.upper() @姓名设定器 def名称(自身、值): 尽管如此: 尝试: 如果不是值: value=str(输

我对单元测试非常陌生,所以很抱歉我的新手问题。 我编写了一个带有一个实例属性“name”的小类

这里的目标是在实例化类时,如果没有传递“name”参数,则要求用户输入,并验证名称的格式是否符合预期

以下是类定义:

class客户:
def uuu init uuuu(self,name=None):
self.name=名称
@财产
def名称(自我):
返回self.\u name.upper()
@姓名设定器
def名称(自身、值):
尽管如此:
尝试:
如果不是值:
value=str(输入(“请输入客户名称:”)
其他:
打印(“找到的客户名称:{}”。格式(值))
如果不是布尔值(重新匹配(“^[A-Za-z0-9-]*$”,值))或值==”:
raise(值错误)
除值错误外:
打印(“无效的客户名称”)
值=无
持续
打破
self.\u name=value
它按预期工作:

>>客户=客户()
请输入客户名称:&&无效
无效的客户名称。
请输入客户的名称:valid
>>>客户名称
“有效”
>>> 
我的测试文件如下:

导入脚本
导入pytest
类别测试客户:
def设置方法(自身):
self.customer=script.customer(“有效名称”)
def拆卸方法(自):
self.customer=“”
def测试\有效\名称(自身):
self.customer.name=“validname”
断言self.customer.name==“VALIDNAME”
def test_无效_名称(自身):
使用pytest.raises(ValueError):
self.customer.name=“&invalidname&”
但是,当我尝试使用pytest测试时,会发生以下情况:

=======================================================================================================================================失败=========================================================================
______________________________________________________________TestCustomer.test\u无效\u名称______________________________________________________________
自我=
def test_无效_名称(自身):
使用pytest.raises(ValueError):
>self.customer.name=“&invalidname&”
测试脚本。py:18:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
script.py:17:in name
value=str(输入(“请输入客户名称:”)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self=,args=()
def读取(自,*参数):
>引发IOError(
“PyTest:在输出被捕获时从STDIN中读取!考虑使用‘-s’”。
)
E OSError:pytest:捕获输出时从标准输入读取数据!考虑使用'-s '。
/usr/local/lib/python3.8/dist-packages/_-pytest/capture.py:732:OSError
------------------------------------------------------------------捕获的标准输出设置-------------------------------------------------------------------
找到的客户名称:validname
-------------------------------------------------------------------捕获的stdout调用-------------------------------------------------------------------
找到客户名称:&invalidname&
无效的客户名称。
请输入客户的姓名:
========================================================================================================================简短测试摘要信息==================================================================
失败的测试\u脚本。py::TestCustomer::test\u无效\u名称-OSError:pytest:捕获输出时从stdin读取!考虑使用'-s '。
=====================================================================================1失败,1在0.07秒内通过================================================================
使用-s选项并输入有效名称时,不会引发异常:

test_script.py找到的客户名称:validname
找到的客户名称:validname
.找到的客户名称:validname
找到客户名称:&invalidname&
无效的客户名称。
请输入客户名称:test
F
==================================================================================================================故障=========================================================================
______________________________________________________________TestCustomer.test\u无效\u名称______________________________________________________________
自我=
def test_无效_名称(自身):
使用pytest.raises(ValueError):
>self.customer.name=“&invalidname&”
E失败:未引发
test_script.py:18:失败
========================================================================================================================简短测试摘要信息==================================================================
失败的测试\u脚本。py::TestCustomer::test\u无效\u名称-失败:未引发
==============================================================================================1失败,1在1.96秒内通过================================================================
我无法理解这件事。。。 任何帮助都将不胜感激:)