我正在为付款流程创建单元测试。大约有20个单元单元测试可以写出一些正面案例和一些负面案例。
示例:
payment_screen=PaymentScreen()
并且我很少有概念。
首先 - 使用赋予属性创建一个Payer对象:
payer=Payer(last_name,country_code)
country_code很重要,因为系统不允许将项目发送到其他国家/地区
第二
payer=Payer.return_correct_payer()
类似的东西:
班级付款人:
@staticmethod
def return_correct_payer():
payer=Payer()
payer.country_code='US'
payer.last_name='Smith'
并在两个选项中
payment_screen.fill_payer_data(payer)
另一个概念:
pay_screen中的只需创建两个方法:
fill_payer_data_with_correct_data()
和
fill_payer_data_with_uncorrect_data()
哪一个最好?或许你有另一个想法(我相信你有)
修改
感谢您的回复,但这不是我需要的。 我只是不希望在给出属性的每个测试用例中创建对象Pax。
我有20个测试用例,所以现在我必须写20次:
payer=Payer('Smith','US')
我不想复制我的代码
答案 0 :(得分:0)
也许您正在寻找的是某种嘲弄框架。然后,当您测试PaymentScreen
时,您可以模拟Payer
。有关python的模拟框架的更多信息,请查看:What is your favorite Python mocking library?。
答案 1 :(得分:0)
嘿。
可能首先回答mocks是你需要的,但我想展示我在测试中如何创建对象。
因此,如果我需要一个具有给定参数的对象,我使用BuilderPattern(实际上是从GOF修改了BuilderPattern),如下所示:
class User {
private string firstName;
private string lastName;
public User(){};
//now the essence
public User withFirstName(strFirstName) {
this.firstName = strFirstName;
return this;
}
public User withLastName(strLastName) {
this.lastName = strLastName;
return this;
}
//some other stuff
}
然后我用以下方式启动对象:
User testUser1 = new User()
.withFirstName("John")
.withLastName("Doe");
然后我做它,我需要的。
P.S。很抱歉代码不是python语法...但你应该得到它