接口测试

main
wanggaofeng 1 year ago
parent e1f38b1fc5
commit 36e467b595

@ -0,0 +1,3 @@
# 项目说明
Playwright微软端到端测试框架学习使用原生.net类库(有MSTest、NUnit单元测试框架集成)xUnit测试框架。

@ -0,0 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Playwright" Version="1.41.2" />
</ItemGroup>
</Project>

@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PlaywrightStudy.Core.TenAPI
{
/// <summary>
/// 获取IP信息 响应类
/// </summary>
public class GetIP
{
public string ip { get; set; }
public string country { get; set; }
public string province { get; set; }
public string city { get; set; }
public string area { get; set; }
public string isp { get; set; }
public string os { get; set; }
public string browser { get; set; }
}
}

@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PlaywrightStudy.Core.TenAPI
{
public class TenApiReturnBase<T>
{
public int code { get; set; }
public string msg { get; set; }
public T data { get; set; }
}
}

@ -3,3 +3,6 @@ global using Xunit;
global using Microsoft.Playwright; global using Microsoft.Playwright;
global using Microsoft.Playwright.Core; global using Microsoft.Playwright.Core;
global using Microsoft.Playwright.Transport; global using Microsoft.Playwright.Transport;
global using PlaywrightStudy.Core;
global using PlaywrightStudy.Core.TenAPI;

@ -23,4 +23,8 @@
</PackageReference> </PackageReference>
</ItemGroup> </ItemGroup>
<ItemGroup>
<ProjectReference Include="..\PlaywrightStudy.Core\PlaywrightStudy.Core.csproj" />
</ItemGroup>
</Project> </Project>

@ -1,3 +1,4 @@
namespace PlaywrightStudy.Test namespace PlaywrightStudy.Test
{ {
public class PlaywrightTest public class PlaywrightTest
@ -416,5 +417,81 @@ namespace PlaywrightStudy.Test
//}); //});
} }
#endregion #endregion
#region WebAPI
/// <summary>
/// 使用免费接口
/// </summary>
[Fact]
public async Task WebAPI_TestAsync()
{
//https://docs.tenapi.cn/ 免费接口
//IP查询 https://tenapi.cn/v2/getip?ip=192.168.1.1
using var playwright = await Playwright.CreateAsync();
var apiRequestContext = await playwright.APIRequest.NewContextAsync(new APIRequestNewContextOptions()
{
BaseURL="https://tenapi.cn",
ExtraHTTPHeaders = new Dictionary<string, string>()
{
{ "Accept","text/html"},
//全局认证
{ "Authorization","Bear a.b.c"}
},
//HttpCredentials = new HttpCredentials() { Origin="http://localhost:8060",Username="admin",Password="123456" },
//IgnoreHTTPSErrors = true, //设置代理时,忽略证书错误
Timeout = 30*1000,
});
var apiResponse = await apiRequestContext.GetAsync("v2/getip?ip=192.168.1.1");
Assert.True(apiResponse.Ok);
var ipResult = await apiResponse.JsonAsync<TenApiReturnBase<GetIP>>();
Assert.NotNull(ipResult);
Assert.IsType<TenApiReturnBase<GetIP>>(ipResult);
Assert.Equal("获取成功", ipResult.msg);
}
/// <summary>
/// 使用Fiddler抓包设置Fiddler为代理服务器,必须先启动Fiddler
/// </summary>
[Fact]
public async Task WebAPI_FiddleProxy_TestAsync()
{
//https://docs.tenapi.cn/ 免费接口
//IP查询 https://tenapi.cn/v2/getip?ip=192.168.1.1
using var playwright = await Playwright.CreateAsync();
var apiRequestContext = await playwright.APIRequest.NewContextAsync(new APIRequestNewContextOptions()
{
BaseURL = "https://tenapi.cn",
ExtraHTTPHeaders = new Dictionary<string, string>()
{
{ "Accept","text/html"},
{ "Authorization","Bear a.b.c"}
},
IgnoreHTTPSErrors = true, //设置代理时,忽略证书错误
Timeout = 30 * 1000,
Proxy = new Proxy() { Server = "http://127.0.0.1:8888" }
});
var apiResponse = await apiRequestContext.GetAsync("v2/getip?ip=192.168.1.1");
Assert.True(apiResponse.Ok);
var ipResult = await apiResponse.JsonAsync<TenApiReturnBase<GetIP>>();
Assert.NotNull(ipResult);
Assert.IsType<TenApiReturnBase<GetIP>>(ipResult);
Assert.Equal("获取成功", ipResult.msg);
}
#endregion
} }
} }

@ -3,7 +3,14 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17 # Visual Studio Version 17
VisualStudioVersion = 17.9.34518.117 VisualStudioVersion = 17.9.34518.117
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PlaywrightStudy.Test", "PlaywrightStudy.Test\PlaywrightStudy.Test.csproj", "{809E556A-9E9E-4110-A2ED-586CADBE6899}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PlaywrightStudy.Test", "PlaywrightStudy.Test\PlaywrightStudy.Test.csproj", "{809E556A-9E9E-4110-A2ED-586CADBE6899}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Docs", "Docs", "{91229A84-D283-4F4F-BA18-6CD45A874B4B}"
ProjectSection(SolutionItems) = preProject
Docs\说明.md = Docs\说明.md
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PlaywrightStudy.Core", "PlaywrightStudy.Core\PlaywrightStudy.Core.csproj", "{230AC9DC-D0E2-41F8-BAF2-D15A6978FC62}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -15,6 +22,10 @@ Global
{809E556A-9E9E-4110-A2ED-586CADBE6899}.Debug|Any CPU.Build.0 = Debug|Any CPU {809E556A-9E9E-4110-A2ED-586CADBE6899}.Debug|Any CPU.Build.0 = Debug|Any CPU
{809E556A-9E9E-4110-A2ED-586CADBE6899}.Release|Any CPU.ActiveCfg = Release|Any CPU {809E556A-9E9E-4110-A2ED-586CADBE6899}.Release|Any CPU.ActiveCfg = Release|Any CPU
{809E556A-9E9E-4110-A2ED-586CADBE6899}.Release|Any CPU.Build.0 = Release|Any CPU {809E556A-9E9E-4110-A2ED-586CADBE6899}.Release|Any CPU.Build.0 = Release|Any CPU
{230AC9DC-D0E2-41F8-BAF2-D15A6978FC62}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{230AC9DC-D0E2-41F8-BAF2-D15A6978FC62}.Debug|Any CPU.Build.0 = Debug|Any CPU
{230AC9DC-D0E2-41F8-BAF2-D15A6978FC62}.Release|Any CPU.ActiveCfg = Release|Any CPU
{230AC9DC-D0E2-41F8-BAF2-D15A6978FC62}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

Loading…
Cancel
Save