我们的团队一直在使用Specflow使用RestSharp作为API客户端来创建API测试。我正在测试的API只是使用POST方法创建了一个资产(具有一些属性),然后使用GET方法来获取新资产的数据,因此我可以反序列化并验证一些属性以确保新资产已创建。
例如,我通过名称属性传递新资产,其中Name =“ Asset15”(其中从序列创建了ID = 15的新资产),然后我获得了通过ID = 15的信息以验证存在具有名称=“ Asset15”的新资产。一切似乎都在起作用,直到最近。
例如,在不更改任何代码的情况下,测试现在会创建ID = 20的Name =“ Asset20”的新资产,但是GET方法似乎返回了Name =“ Asset19”和ID = 19的记录,即使我手动看到已经创建了Name =“ Asset20”和ID = 20的资产,也会导致测试明显失败。
似乎存在一些缓存问题,我想知道清除该缓存的方法是什么。
我在某处看到了一篇文章,该人员仅通过重新启动Visual Studio即可解决此问题。我尝试这样做只是为了获得结果2条记录。
这是我设置测试的方式:
_settings.BaseUrl = new Uri(ConfigurationManager.AppSettings["baseUrl"].ToString());
_settings.RestClient.BaseUrl = _settings.BaseUrl;
执行POST方法以创建资产:
_settings.PostRequest = new RestRequest("CreateAsset", Method.POST);
_settings.PostRequest.RequestFormat = DataFormat.Json;
_settings.PostRequest.AddJsonBody(testData);
_settings.PostResponse = _settings.RestClient.Execute(_settings.PostRequest);
稍后我执行GET方法,反序列化并验证信息是否正确:
_settings.GetRequest = new RestRequest("GetAsset?id=20", Method.GET);
_settings.GetResponse = _settings.RestClient.Execute(_settings.GetRequest);
var deserial = new JsonDeserializer();
var output = deserial.Deserialize<Dictionary<string, string>>(_settings.GetResponse);
var result = output["Name"];
Assert.That(result.Equals(testData.Name), $"Error: ...");
测试通过了,现在看来落后了1或2个记录。有人可以帮忙让我知道我做错了吗?预先感谢!
答案 0 :(得分:0)
这里的问题是API而不是测试代码。可以关闭,因为它不是问题。