在线做网站教程,网站建设方案编写人,移动互联网应用程序开发,合肥滨湖建设指挥部网站开发完接口#xff0c;接下来我们需要对我们开发的接口进行测试。接口测试的方法比较多#xff0c;使用接口工具或者Python来测试都可以#xff0c;工具方面比如之前我们学习过的Postman或者Jmeter #xff0c;Python脚本测试可以使用Requests unittest来测试。测试思路功… 开发完接口接下来我们需要对我们开发的接口进行测试。接口测试的方法比较多使用接口工具或者Python来测试都可以工具方面比如之前我们学习过的Postman或者Jmeter Python脚本测试可以使用Requests unittest来测试。测试思路功能测试数据的增删改查异常测试未授权参数异常等Postman测试使用测试工具Postman测试结果如下所示user接口测试查询所有用户创建用户修改用户删除用户未授权测试groups接口测试查询所有groups数据修改group数据删除groupsRequestsUnittest在api目录下面新建一个test_unittest.py代码实现如下:tests_unittest.pyimport requestsimport unittestclass UserTest(unittest.TestCase):def setUp(self): self.base_urlhttp://127.0.0.1:8000/users self.auth(51zxw,zxw20182018)def test_get_user(self): rrequests.get(self.base_url/1/,authself.auth) resultr.json() self.assertEqual(result[username],51zxw) self.assertEqual(result[email],51zxw163.com)def test_add_user(self): form_data{username:zxw222,email:zxw668qq.com,groups:http://127.0.0.1:8000/groups/2/} rrequests.post(self.base_url/,dataform_data,authself.auth) resultr.json() self.assertEqual(result[username],zxw222)def test_delete_user(self): rrequests.delete(self.base_url/11/,authself.auth) self.assertEqual(r.status_code,204)def test_update_user(self): form_data{email:2222163.com} rrequests.patch(self.base_url/2/,authself.auth,dataform_data) resultr.json() self.assertEqual(result[email],2222163.com)def test_no_auth(self): rrequests.get(self.base_url) resultr.json() self.assertEqual(result[detail],Authentication credentials were not provided.)class GroupTest(unittest.TestCase):def setUp(self): self.base_urlhttp://127.0.0.1:8000/groups self.auth(51zxw,zxw20182018)def test_group_developer(self): rrequests.get(self.base_url/7/,authself.auth) resultr.json() self.assertEqual(result[name],Developer)def test_add_group(self): form_data{name:Pm} rrequests.post(self.base_url/,authself.auth,dataform_data) resultr.json() self.assertEqual(result[name],Pm)def test_update_group(self): form_data{name:Boss} rrequests.patch(self.base_url/6/,authself.auth,dataform_data) resultr.json() self.assertEqual(result[name],Boss)def test_detele_group(self): rrequests.delete(self.base_url/6/,authself.auth) self.assertEqual(r.status_code,204)if __name__ __main__: unittest.main()Django自带测试模块打开api目录下面的tests文件编写如下测试代码tests.pyfrom django.test import TestCaseimport requests# Create your tests here.class UserTest(TestCase):def setUp(self): self.base_urlhttp://127.0.0.1:8000/users self.auth(51zxw,xxxxx)def test_get_user(self): rrequests.get(self.base_url/1/,authself.auth) resultr.json() self.assertEqual(result[username],51zxw) self.assertEqual(result[email],zxw886qq.com)# unittest.skip(skip add user)def test_add_user(self): form_data{username:zxw222,email:zxw668qq.com,groups:http://127.0.0.1:8000/groups/2/} rrequests.post(self.base_url/,dataform_data,authself.auth) resultr.json() self.assertEqual(result[username],zxw222)# unittest.skip(skip test_delete_user)def test_delete_user(self): rrequests.delete(self.base_url/11/,authself.auth) self.assertEqual(r.status_code,204)def test_update_user(self): form_data{email:2222163.com} rrequests.patch(self.base_url/2/,authself.auth,dataform_data) resultr.json() self.assertEqual(result[email],2222163.com)def test_user_already_exists(self): form_data {username: zxw222, email: zxw668qq.com, groups: http://127.0.0.1:8000/groups/2/} r requests.post(self.base_url /, dataform_data, authself.auth) result r.json()#预期返回值{username:[A user with that username already exists.]} self.assertEqual(result[username][0], A user with that username already exists.)def test_no_auth(self): rrequests.get(self.base_url) resultr.json() self.assertEqual(result[detail],Authentication credentials were not provided.)class GroupTest(TestCase):def setUp(self): self.base_urlhttp://127.0.0.1:8000/groups self.auth(51zxw,xxxxxx)def test_group_developer(self): rrequests.get(self.base_url/3/,authself.auth) resultr.json() self.assertEqual(result[name],Pm)# unittest.skip(skip test_add_group)def test_add_group(self): form_data{name:Leader} rrequests.post(self.base_url/,authself.auth,dataform_data) resultr.json() self.assertEqual(result[name],Leader)def test_update_group(self): form_data{name:Boss} rrequests.patch(self.base_url/6/,authself.auth,dataform_data) resultr.json() self.assertEqual(result[name],Boss)def test_detele_group(self): rrequests.delete(self.base_url/6/,authself.auth) self.assertEqual(r.status_code,204)运行方式打开cmd使用如下命令来运行即可D:\django_restfulpython manage.py test上面命令是默认测试全部的用例如果想测试部分用例则可以使用如下命令测试指定的测试类D:\django_restfulpython manage.py test api.tests.UserTest测试具体的某一条具体用例D:\django_restfulpython manage.py test api.tests.UserTest.test_get_user报错相关1.迁移数据库时没有权限写入File C:\Users\jli75\AppData\Local\Programs\Python\Python37\lib\site-packages\MySQLdb\connections.py, line 280, in query _mysql.connection.query(self, query)django.db.utils.InternalError: (7, Error on rename of .\\httprunnermanager\\#sql-1178_7.frm to .\\httprunnermanager\\djcelery_taskstate.frm (Errcode: 13 - Permission denied))原因可能是杀毒软件通过阻止修改frm文件来解决此问题。通过在杀毒软件威胁防护高级选项中禁用按访问扫描并杀毒软件设置为忽略这些扩展名来解决此问题迁移数据库时没有清除之前的迁移文件migrations File C:\Users\jli75\AppData\Local\Programs\Python\Python37\lib\site-packages\MySQLdb\connections.py, line 280, in query _mysql.connection.query(self, query)_mysql_exceptions.OperationalError: (1050, Table djcelery_crontabschedule already exists)解决方案删除migrations文件夹即可。setting配置错误raise MigrationSchemaMissing(Unable to create the django_migrations table (%s) % exc)django.db.migrations.exceptions.MigrationSchemaMissing: Unable to create the django_migrations table ((1064, You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near (6) NOT NULL) at line 1))解决方案Django2.1不再支持MySQL5.5必须5.6版本以上 可以使用如下命令 查看当前Mysql版本mysql -Vmysql Ver 8.0.1-dmr for Win64 on x86_64 (MySQL Community Server (GPL))更多干货Restful接口开发与测试—集成SwaggerRestful接口开发与测试—Django安装Restful接口开发与测试—Rest简介Python接口自动化——Requests基础功能Python接口自动化——RequestsJmeterAntJenkins接口自动化测试平台JmeterAntJenkins接口自动化测试平台Jmeter用例数据分离Jmeter CSV文件管理与正则匹配Jmeter变量设置Jmeter简介与安装断言与参数设置Jmeter简介与安装Postman批量执行与集成JenkinsMac 环境Appium自动化测试环境搭建众里寻他千百度—Appium Android 元素定位方式Android自动化测试设备弹窗处理Appium iOS 元素定位与操作UbuntuDockerSTF环境搭建Anyproxy抓包代理安装使用Python自动化日志收集Android 测试工具——Monkeyrunner API关注公众号更多干货秒得到