Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Selenium UI测试用例添加API测试用例_C#_Api_Selenium Webdriver_Nunit_Restsharp - Fatal编程技术网

C# 使用Selenium UI测试用例添加API测试用例

C# 使用Selenium UI测试用例添加API测试用例,c#,api,selenium-webdriver,nunit,restsharp,C#,Api,Selenium Webdriver,Nunit,Restsharp,关于我的项目的信息:c#,selenium 3.9,Nunit,windows,VS 17,RestSharp(用于API) Project主要是为UI测试用例开发的,但是现在我想添加API测试用例,添加额外的API用例,因为如果在UI级别进行测试,它们会很耗时 问题:每当我运行我的API案例时,驱动程序就会被初始化并调用浏览器,在那之后,我的API测试就开始了,最后我看到API测试运行良好并成功运行 我知道我必须更改基类上的实现,但我不确定我应该做什么,这样我的框架就可以清楚地了解何时调用驱动

关于我的项目的信息:c#,selenium 3.9,Nunit,windows,VS 17,RestSharp(用于API)

  • Project主要是为UI测试用例开发的,但是现在我想添加API测试用例,添加额外的API用例,因为如果在UI级别进行测试,它们会很耗时

  • 问题:每当我运行我的API案例时,驱动程序就会被初始化并调用浏览器,在那之后,我的API测试就开始了,最后我看到API测试运行良好并成功运行

  • 我知道我必须更改基类上的实现,但我不确定我应该做什么,这样我的框架就可以清楚地了解何时调用驱动程序以及何时跳过??(或者我不确定我们是否可以通过Nunit注释实现这一点)

  • 期望值:当运行UI案例时,驱动程序应调用并启动浏览器,但当运行API案例时,驱动程序不应调用且不应启动浏览器

  • 请参见实施:

  • ValidateUI.cs:BaseTest

    [TestFixture]
    
    public class ValidateUI : BaseTest
    {
    
        [Test]
        public static void testUI()
        {
    
        }
    
    [TestFixture]
    
    public class ValidateAPI : BaseTest
    {
    
        [Test]
        public static void testAPI()
        {
    
        }
    
    } ValidateAPI.cs:BaseTest

    [TestFixture]
    
    public class ValidateUI : BaseTest
    {
    
        [Test]
        public static void testUI()
        {
    
        }
    
    [TestFixture]
    
    public class ValidateAPI : BaseTest
    {
    
        [Test]
        public static void testAPI()
        {
    
        }
    
    } BaseTest.cs

    [TestFixture]
    public class BaseTest
    {        
        [SetUp]
        public void Init()
        {
            Driver.ConfigInit();
            Driver.LogStart();
            Driver.Initialize(Settings.BrowserType);
            LoginPage.GoTo(Settings.BrowserType);
        }
          [TearDown]
        public void Cleanup()
        {      
            Driver.Close();
        }
    }
    

    如果不希望API测试使用驱动程序,那么不应该从设置驱动程序的BaseTest派生API夹具

    您可以尝试这样的继承层次结构

    Base Fixture
        API Base Fixture
            API Test Fixture 1
            API Test Fixture 2
                etc.
        UI Base Fixture
            UI Test Fixture 1
            UI Test Fixture 1
    
    基本设备将设置日志记录和其他常见内容

    UI基础将设置驱动程序等

    API Base将执行API测试所需的任何设置


    这种设置分区正是fixture想要做的。

    我选择BaseTest,因为这是我开始记录一切的地方。我努力在不同的类中保持日志记录,但我没有这样做,谢谢你宝贵的回答。关键是,继承层次结构的基础应该只做那些你想为所有测试做的事情。请参阅一个假设组织的编辑答案。谢谢Charlie,我已经完成了这个固定装置的更改(现在我有两个基类,一个用于API,另一个用于UI),它对我很有效,非常感谢您的时间,早些时候我想我不应该有两个基类,但没有找到解决方法。