如何比较一个断言或另一个断言是否为真

How to compare if one assert OR other assert are true

我有一个应用程序,有英文版和西班牙文版。我使用英语自动化了一些流程,所以断言是英文的。现在,我想用西班牙语自动化它,所以我唯一需要做的就是用西班牙语添加断言。

如何添加西班牙语断言并检查 IF one OR other = true THEN ok,以便能够轻松重用我拥有的所有代码?

这是我使用断言的方式:

if (_app.Query(x => x.Class("SystemWebView").Css("BUTTON#button_home_back")).Length > 0)
{
    _app.WaitForElement(e => e.Css("BUTTON#button_home_back"), "Timeout waiting for the Home screen", new TimeSpan(0, 1, 0), null, null);

    Assert.AreEqual(_app.Query(e => e.Css("ion-title"))[0].TextContent, "englishString");                                        
     _app.Tap(x => x.Class("SystemWebView").Css("BUTTON#button_home_back"));
}

_app.Screenshot("englishString");
break;

您可以创建一个方法,根据语言 returns 正确的字符串。

Assert.AreEqual(_app.Query(e => e.Css("ion-title"))[0].TextContent, 
    GetTitleInCurrentLanguage()); 

当您执行此断言时,您必须已经知道该应用程序使用的是哪种语言 运行ning 因此您绝对应该针对该语言的确切字符串进行断言,而不是 a || b 时尚,因为当应用程序应该是英文时,您希望断言失败,以防出现西班牙文标题。

您实现 returns 本地化资源的方法完全取决于您的应用程序中构建本地化的方式。在测试的情况下,您可能希望在测试中对字符串进行硬编码,以确保您不依赖于本地化基础设施的功能。或者您可以单独 运行 测试以确保此基础架构正常工作。

如果我要那样做,我会使用字典和枚举。像这样

enum Lang { English, Spanish }

Lang CurrentLang = Lang.English;

Dictionary<Lang, string> Asserts = new Dictionary<Lang, string>{
    {Lang.English, "englishString"},
    {Lang.Spanish, "spanishString"}
};

然后

Assert.AreEqual(_app.Query(e => e.Css("ion-title"))[0].TextContent, Asserts[CurrentLang]);