为什么我的测试一起运行时会失败,但要单独通过? [英] Why do my tests fail when run together, but pass individually?

查看:108
本文介绍了为什么我的测试一起运行时会失败,但要单独通过?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我在Visual Studio中编写测试时,通过保存,构建然后在Nunit中运行测试来检查它是否正常工作(右键单击测试然后运行).

When I write a test in Visual Studio, I check that it works by saving, building and then running the test it in Nunit (right click on the test then run).

测试正常进行... 所以我继续...

The test works yay... so I Move on...

现在,我编写了另一个测试,并且可以像上面那样保存并测试它,因此它可以正常工作.但是,当它们一起运行时,它们将无法工作.

Now I have written another test and it works as I have saved and tested it like above. But, they dont work when they are run together.

这是我的两个测试,分别运行时会起作用,但一起运行时会失败:

Here are my two tests that work when run as individuals but fail when run together:

using System;
using NUnit.Framework;
using OpenQA.Selenium.Support.UI;
using OpenQA.Selenium;

namespace Fixtures.Users.Page1
{
    [TestFixture]
    public class AdminNavigateToPage1 : SeleniumTestBase
    {
        [Test]
        public void AdminNavigateToPage1()
        {
            NavigateTo<LogonPage>().LogonAsCustomerAdministrator();
            NavigateTo<Page1>();
            var headerelement = Driver.FindElement(By.ClassName("header"));

            Assert.That(headerelement.Text, Is.EqualTo("Page Title"));
            Assert.That(Driver.Url, Is.EqualTo("http://localhost/Page Title"));
        }

        [Test]
        public void AdminNavigateToPage1ViaMenu()
        {
            NavigateTo<LogonPage>().LogonAsCustomerAdministrator();
            Driver.FindElement(By.Id("menuitem1")).Click();
            Driver.FindElement(By.Id("submenuitem4")).Click();
            var headerelement = Driver.FindElement(By.ClassName("header"));

            Assert.That(headerelement.Text, Is.EqualTo("Page Title"));
            Assert.That(Driver.Url, Is.EqualTo("http://localhost/Page Title"));
        }
    }
}

当第二项测试因为一起运行而失败时

When the second test fails because they have been run together

Nunit呈现以下内容:

Sse.Bec.Web.Tests.Fixtures.ManageSitesAndUsers.ChangeOfPremises.AdminNavigateToChangeOfPremises.AdminNavigateToPageChangeOfPremisesViaMenu: OpenQA.Selenium.NoSuchElementException:找不到元素

Sse.Bec.Web.Tests.Fixtures.ManageSitesAndUsers.ChangeOfPremises.AdminNavigateToChangeOfPremises.AdminNavigateToPageChangeOfPremisesViaMenu: OpenQA.Selenium.NoSuchElementException : The element could not be found

此行高亮显示:

var headerelement = Driver.FindElement(By.ClassName("header"));

有人知道为什么我的代码一起运行时会失败,但是单独运行时会失败吗?

Does anyone know why my code fails when run together, but passes when run alone?

任何答案将不胜感激!

推荐答案

可以尝试的两件事

  1. 在以下两行之间输入断点.并查看第二行时您在哪个页面上
  2. 通过Thread.Sleep在这两行之间引入一点延迟

  1. put the break point between the following two lines. And see which page are you in when the second line is hit
  2. Introduce a slight delay between these two lines via Thread.Sleep

Driver.FindElement(By.Id("submenuitem4")).Click(); var headerelement = Driver.FindElement(By.ClassName("header"));

Driver.FindElement(By.Id("submenuitem4")).Click(); var headerelement = Driver.FindElement(By.ClassName("header"));

这篇关于为什么我的测试一起运行时会失败,但要单独通过?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆