我正在从 TestNG
测试类调用某些辅助方法来调用 API 端点并检索响应。并验证响应对象。下面是我的 TestNG
测试类
在下面的类中,我正在初始化辅助对象和声明。这是一个好习惯吗?还是应该在构造函数或@BeforeClass 方法中初始化?
public class GetPaymentDetailsTests extends TestBase {
String authToken = Partner.get(WithScope.CHECKOUT_USER_GROUP).getBasicToken();
String partnerId = Partner.get((WithScope.CHECKOUT_USER_GROUP)).getPartnerId();
String requestId = UUID.randomUUID().toString();
MerchantAdapterHelper merchantAdapterHelper = new MerchantAdapterHelper();
CustomerAdapterHelper customerAdapterHelper = new CustomerAdapterHelper();
GopayAPIsHelper gopayAPIsHelper = new GopayAPIsHelper();
public static final String redirectURL = "https://www.google.com";
@Test(groups = {Categories.SMOKE_PAYMENT_EXPERIENCE, Categories.REGRESSION_PAYMENT_EXPERIENCE, Categories.CHECKOUT, Categories.GOPAY_APIS, Categories.PAYMENT_EXPERIENCE, Countries.ID})
public void validateGetPaymentDetailsAPIByReferenceID(){
Customer customer = customerHelper.getCustomer(CustomerGroup.P2M_ONLINE);
CollectResponse collectPaymentResponse = merchantAdapterHelper.linkWalletAndInitiateCollectPaymentRequest(authToken, requestId, partnerId, OnlineMerchants.JD_ID.getMerchantID(), customer, 2, redirectURL, "en_EN" );
String referenceID = merchantAdapterHelper.getParamValueFromnextActionURL(collectPaymentResponse.getData().getNext_action().getRedirect_to_url(), "reference");
Assert.assertEquals(gopayAPIsHelper.getPaymentDetailsByReferenceID(referenceID).getHttpStatusCode(), HttpStatus.SC_OK, "Failed to get Get Payment Details response");
}
@Test(groups = {Categories.SMOKE_PAYMENT_EXPERIENCE, Categories.REGRESSION_PAYMENT_EXPERIENCE, Categories.CHECKOUT, Categories.GOPAY_APIS, Categories.PAYMENT_EXPERIENCE, Countries.ID})
public void validateGetPaymentDetailsAPIResponseByStateID(){
Customer customer = customerHelper.getCustomer(CustomerGroup.P2M_ONLINE);
CollectResponse collectPaymentResponse = merchantAdapterHelper.linkWalletAndInitiateCollectPaymentRequest(authToken, requestId, partnerId, OnlineMerchants.TEST_USER_SOURABH.getMerchantID(), customer, 2, redirectURL, "en_EN" );
String stateID = merchantAdapterHelper.getParamValueFromnextActionURL(collectPaymentResponse.getData().getNext_action().getRedirect_to_url(), "id");
Assert.assertEquals(gopayAPIsHelper.getPaymentDetailsByStateID(stateID).getHttpStatusCode(), HttpStatus.SC_OK, "Failed to get Get Payment Details response");
}
}
答案 0 :(得分:1)
如果辅助类的对象包含任何可能在任何方法调用期间修改的状态(类字段),这可能会影响下一个测试用例,则必须使用当前方法。
如果辅助方法仅用于调用方法,那么正如您所说,您可以在 @BeforeClass
方法中创建一个对象,这样您就不会为每个测试创建一个对象,这会不必要。
如果辅助类是由您定义的,并且它只包含调用 API 的方法,那么我建议您将所有这些方法定义为 static
。这将允许您在不创建对象的情况下调用方法,这是理想情况下的帮助程序/实用程序类。