如何将 bearertoken 添加到 post/get restsharp 自动化测试
How to add bearertoken to post/get restsharp automation testing
也许任何人都可以帮助我进行 RestSharp api 自动化测试。
我会尽量说清楚。
基本上方案是:
我正在发送我的 username/password 凭证并在 return 中获得 BearerToken。
我将不记名令牌解析为 json 文件。
获得不记名令牌后,我需要“验证”才能获得我需要的信息。
例如,我需要在输入 companyName ="Whatever" 后获得的完整公司信用报告;公司代码 = "随便";
{
var client = new RestClient("https://www.myapitesting.com/api/Auth/Authenticate");
var request = new RestRequest(Method.GET);
var body = new AuthenticatePostCredentials { Username = "myUserName", Password = "myPassword" };
request.AddJsonBody(body);
var response = client.Post(request);
HttpStatusCode statusCode = response.StatusCode;
int numericStatusCode = (int)statusCode;
request.AddHeader("content-type", "application/json");
var queryResult = client.Execute<object>(request).Data;
string jsonToken = JsonConvert.SerializeObject(queryResult);
var JSON1 = JToken.Parse(jsonToken);
var pureToken = JSON1.Value<string>("token");
File.WriteAllText(@"C:\Users\....\TestAPI\TestAPI\token.json", pureToken);
Console.WriteLine(pureToken);
Console.WriteLine(numericStatusCode)
The output I get is: token, status code 200 (correct credentials to get the bearertoken)
//////////At this point I get the token and it is writed into my json file/////////////// (the token works)
现在我正在尝试使用我的令牌进行身份验证并获取我需要的公司信息
var client = new RestClient("https://www.myapitesting.com/api/GetCompanyReport");
var myRequest = new RestRequest(Method.POST);
myRequest.AddHeader("Accept", "application/json");
myRequest.AddHeader("Authorization", $"Bearer{pureToken}");
myRequest.AddHeader("content-type", "application/json");
var companyInfoInput = new AuthenticatePostCredentials { companyName = "MyCompanyName", companyCode = "MyCompanyCode" };
requestas.AddJsonBody(companyInfoInput);
var response = myRequest.Execute(request);
Console.WriteLine(response.Content);
我得到的输出是错误代码,表明我还没有通过身份验证,即使我使用 addHeader 命令传递了不记名令牌。
{"ErrorId":401,"ErrorName":"Unauthorized","ErrorDescription":"User is not logged in"}
我做错了什么?任何形式的帮助将不胜感激!
在这种情况下,您可以加载您想要使用的“Authenticator”,如果是 JWT,您可以像这样实例化:
var authenticator = new JwtAuthenticator(pureToken);
然后像这样设置您的客户端验证器:
client.Authenticator = authenticator;
主要是,对于使用 Restsharp 的最常见的,您不需要手动设置 headers。
例如,您可以修复此语句:
var myRequest = new RestRequest(url, DataFormat.Json);
var response = client.Post(request);
我也做了这个gist给你看个例子
如果你想看更完整的东西我也有这个another gist
也许任何人都可以帮助我进行 RestSharp api 自动化测试。 我会尽量说清楚。
基本上方案是: 我正在发送我的 username/password 凭证并在 return 中获得 BearerToken。 我将不记名令牌解析为 json 文件。
获得不记名令牌后,我需要“验证”才能获得我需要的信息。 例如,我需要在输入 companyName ="Whatever" 后获得的完整公司信用报告;公司代码 = "随便";
{
var client = new RestClient("https://www.myapitesting.com/api/Auth/Authenticate");
var request = new RestRequest(Method.GET);
var body = new AuthenticatePostCredentials { Username = "myUserName", Password = "myPassword" };
request.AddJsonBody(body);
var response = client.Post(request);
HttpStatusCode statusCode = response.StatusCode;
int numericStatusCode = (int)statusCode;
request.AddHeader("content-type", "application/json");
var queryResult = client.Execute<object>(request).Data;
string jsonToken = JsonConvert.SerializeObject(queryResult);
var JSON1 = JToken.Parse(jsonToken);
var pureToken = JSON1.Value<string>("token");
File.WriteAllText(@"C:\Users\....\TestAPI\TestAPI\token.json", pureToken);
Console.WriteLine(pureToken);
Console.WriteLine(numericStatusCode)
The output I get is: token, status code 200 (correct credentials to get the bearertoken)
//////////At this point I get the token and it is writed into my json file/////////////// (the token works)
现在我正在尝试使用我的令牌进行身份验证并获取我需要的公司信息
var client = new RestClient("https://www.myapitesting.com/api/GetCompanyReport");
var myRequest = new RestRequest(Method.POST);
myRequest.AddHeader("Accept", "application/json");
myRequest.AddHeader("Authorization", $"Bearer{pureToken}");
myRequest.AddHeader("content-type", "application/json");
var companyInfoInput = new AuthenticatePostCredentials { companyName = "MyCompanyName", companyCode = "MyCompanyCode" };
requestas.AddJsonBody(companyInfoInput);
var response = myRequest.Execute(request);
Console.WriteLine(response.Content);
我得到的输出是错误代码,表明我还没有通过身份验证,即使我使用 addHeader 命令传递了不记名令牌。
{"ErrorId":401,"ErrorName":"Unauthorized","ErrorDescription":"User is not logged in"}
我做错了什么?任何形式的帮助将不胜感激!
在这种情况下,您可以加载您想要使用的“Authenticator”,如果是 JWT,您可以像这样实例化:
var authenticator = new JwtAuthenticator(pureToken);
然后像这样设置您的客户端验证器:
client.Authenticator = authenticator;
主要是,对于使用 Restsharp 的最常见的,您不需要手动设置 headers。
例如,您可以修复此语句:
var myRequest = new RestRequest(url, DataFormat.Json);
var response = client.Post(request);
我也做了这个gist给你看个例子
如果你想看更完整的东西我也有这个another gist