我正在使用此功能来检查UI中是否显示了某些隐私政策。如果显示 x 策略,则单击"我同意"按钮转到下一页以检查是否显示 y 策略。如果未显示,则标记错误。此过程将重复,直到检查所有策略。
我们有 4 个隐私政策,我们可以打开或关闭。因此,有时只会显示 2 或 3 个策略,而不是 4 个。如果 2 或 3 个策略仅显示没问题,并且不应违反测试。因此,所有 if s。有什么东西可以代替这么多吗?我觉得我在一种方法下有很多 if s。
public static void CheckPolicy(bool privacyPolicy1Expected = true, bool privacyPolicy2Expected = true, bool privacyPolicy3Expected = true, bool privacyPolicy4Expected = true)
{
if (privacyPolicy1Expected) { PP1AgreementValidation(); }
if (!privacyPolicy1Expected) { App.AssertElementNotPresent(_privacyPolicy1Header); }
if (privacyPolicy2Expected) { PP2AgreementValidation(); }
if (!privacyPolicy2Expected) { App.AssertElementNotPresent(_privacyPolicy2Header); }
if (privacyPolicy3Expected) { PP3AgreementValidation(); }
if (!privacyPolicy3Expected) { App.AssertElementNotPresent(_privacyPolicy3Header); }
if (privacyPolicy4Expected) { PP4AgreementValidation(); }
if (!privacyPolicy4Expected) { App.AssertElementNotPresent(_privacyPolicy4Header); }
}
我没有收到任何错误。代码工作正常。我只需要稍微缩短一下或使用不同的函数来缩短代码。
您正在检查条件是否为真,然后再次检查它是否为真。您可以将其重写为if else
。
if (privacyPolicy1Expected) { PP1AgreementValidation(); }
if (!privacyPolicy1Expected) { App.AssertElementNotPresent(_privacyPolicy1Header); }
成为:
if (privacyPolicy1Expected)
{
PP1AgreementValidation();
}
else
{
App.AssertElementNotPresent(_privacyPolicy1Header);
}
如果你想真正缩短它,我会建议使用三元运算符
privacyPolicy1Expected ? PP1AgreementValidation() : App.AssertElementNotPresent(_privacyPolicy1Header);
它的工作方式类似于紧凑的 If/Else 语句。它测试"?"之前的条件,如果为真,则在":"之前执行代码,如果测试为假,它将执行":"之后的代码。