如何使用 NUnit 和 C# 验证网页上是否存在文本

问题描述 投票:0回答:3

我正在尝试验证应用程序登录页面上的文本可用性。

我该怎么做?

使用以下代码,我可以验证文本是否存在,但是我必须根据每个条件打印文本,因此如果文本错误,则测试用例应该失败。

public void Readcontent()
{
    using (WebClient client = new WebClient())
    {
        // string Test = "By logging on you can Ask the our experts your questions by email....";
        string Test;
        string url = "https://sampleweb.com";
        string content = client.DownloadString(url);
        if (content.Contains("XYZ"))
        {
            Console.WriteLine("Expected Text found here: ");
        }
        else
        {
            Console.WriteLine("Expected Text NOT found here: ");
        }
        Console.WriteLine(content);
}
c# string unit-testing nunit
3个回答
3
投票

NUnit 有用于字符串断言的类

StringAssert
。该类有方法
Contains
:

[Test]
public void DownloadStringTest()
{
    using (WebClient client = new WebClient())
    {
        string url = "https://sampleweb.com";
        string content = client.DownloadString(url);
        StringAssert.Contains("XYZ", content, "Expected Text NOT found");
    }
}

StringAssert
还有
StartsWith
EndsWith
AreEqualIgnoringCase
方法。


3
投票

我将您的问题解释为“当 content.Contains("XYZ") 为 false 时,如何让测试失败?”。为此,您需要添加一个断言。

Assert.That(actual, Contains.Substring(expected), "Error message");

在你的代码中:

[Test]
public void Readcontent()   
{
    using (WebClient client = new WebClient())
    {
        string url = "https://sampleweb.com";
        string content = client.DownloadString(url);
        Assert.That(content, Contains.Substring("XYZ"), "String not found in entire page content.");
    }
}

0
投票

补充 @Stephen Straton 所说的,我们仅使用 Console.Writeline 进行调试(尽管不是最好的方法)。任何验证都应通过 Assert 方法和/或使用 Assert 的测试自动化框架中的自定义验证方法进行。

© www.soinside.com 2019 - 2024. All rights reserved.