日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

restful接口开发实例_Restful接口开发与测试—接口测试

發(fā)布時(shí)間:2024/7/23 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 restful接口开发实例_Restful接口开发与测试—接口测试 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

開發(fā)完接口,接下來(lái)我們需要對(duì)我們開發(fā)的接口進(jìn)行測(cè)試。接口測(cè)試的方法比較多,使用接口工具或者Python來(lái)測(cè)試都可以,工具方面比如之前我們學(xué)習(xí)過的Postman或者Jmeter?,Python腳本測(cè)試可以使用Requests?+?unittest來(lái)測(cè)試。

測(cè)試思路

  • 功能測(cè)試:數(shù)據(jù)的增刪改查

  • 異常測(cè)試:未授權(quán),參數(shù)異常等

Postman測(cè)試

使用測(cè)試工具Postman測(cè)試結(jié)果如下所示:

user接口測(cè)試

查詢所有用戶

創(chuàng)建用戶

修改用戶

刪除用戶

未授權(quán)測(cè)試

groups接口測(cè)試

查詢所有g(shù)roups數(shù)據(jù)

修改group數(shù)據(jù)

刪除groups

Requests+Unittest

在api目錄下面新建一個(gè)test_unittest.py,代碼實(shí)現(xiàn)如下:

tests_unittest.py


import requests
import unittest

class UserTest(unittest.TestCase):
def setUp(self):
self.base_url='http://127.0.0.1:8000/users'
self.auth=('51zxw','zxw20182018')

def test_get_user(self):
r=requests.get(self.base_url+'/1/',auth=self.auth)
result=r.json()

self.assertEqual(result['username'],'51zxw')
self.assertEqual(result['email'],'51zxw@163.com')


def test_add_user(self):
form_data={'username':'zxw222','email':'zxw668@qq.com','groups':'http://127.0.0.1:8000/groups/2/'}
r=requests.post(self.base_url+'/',data=form_data,auth=self.auth)
result=r.json()

self.assertEqual(result['username'],'zxw222')


def test_delete_user(self):
r=requests.delete(self.base_url+'/11/',auth=self.auth)

self.assertEqual(r.status_code,204)

def test_update_user(self):
form_data={'email':'2222@163.com'}
r=requests.patch(self.base_url+'/2/',auth=self.auth,data=form_data)
result=r.json()

self.assertEqual(result['email'],'2222@163.com')


def test_no_auth(self):
r=requests.get(self.base_url)
result=r.json()

self.assertEqual(result['detail'],'Authentication credentials were not provided.')

class GroupTest(unittest.TestCase):
def setUp(self):
self.base_url='http://127.0.0.1:8000/groups'
self.auth=('51zxw','zxw20182018')

def test_group_developer(self):
r=requests.get(self.base_url+'/7/',auth=self.auth)
result=r.json()

self.assertEqual(result['name'],'Developer')

def test_add_group(self):
form_data={'name':'Pm'}
r=requests.post(self.base_url+'/',auth=self.auth,data=form_data)
result=r.json()

self.assertEqual(result['name'],'Pm')

def test_update_group(self):
form_data={'name':'Boss'}
r=requests.patch(self.base_url+'/6/',auth=self.auth,data=form_data)
result=r.json()

self.assertEqual(result['name'],'Boss')

def test_detele_group(self):
r=requests.delete(self.base_url+'/6/',auth=self.auth)

self.assertEqual(r.status_code,204)


if __name__ == '__main__':
unittest.main()

Django自帶測(cè)試模塊

打開api目錄下面的tests文件,編寫如下測(cè)試代碼

tests.py


from django.test import TestCase
import requests

# Create your tests here.
class UserTest(TestCase):
def setUp(self):
self.base_url='http://127.0.0.1:8000/users'
self.auth=('51zxw','xxxxx')

def test_get_user(self):
r=requests.get(self.base_url+'/1/',auth=self.auth)
result=r.json()

self.assertEqual(result['username'],'51zxw')
self.assertEqual(result['email'],'zxw886@qq.com')

# @unittest.skip('skip add user')
def test_add_user(self):
form_data={'username':'zxw222','email':'zxw668@qq.com','groups':'http://127.0.0.1:8000/groups/2/'}
r=requests.post(self.base_url+'/',data=form_data,auth=self.auth)
result=r.json()

self.assertEqual(result['username'],'zxw222')

# @unittest.skip('skip test_delete_user')
def test_delete_user(self):
r=requests.delete(self.base_url+'/11/',auth=self.auth)

self.assertEqual(r.status_code,204)

def test_update_user(self):
form_data={'email':'2222@163.com'}
r=requests.patch(self.base_url+'/2/',auth=self.auth,data=form_data)
result=r.json()

self.assertEqual(result['email'],'2222@163.com')

def test_user_already_exists(self):
form_data = {'username': 'zxw222', 'email': 'zxw668@qq.com', 'groups': 'http://127.0.0.1:8000/groups/2/'}
r = requests.post(self.base_url + '/', data=form_data, auth=self.auth)
result = r.json()
#預(yù)期返回值:{"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):
r=requests.get(self.base_url)
result=r.json()

self.assertEqual(result['detail'],'Authentication credentials were not provided.')

class GroupTest(TestCase):
def setUp(self):
self.base_url='http://127.0.0.1:8000/groups'
self.auth=('51zxw','xxxxxx')

def test_group_developer(self):
r=requests.get(self.base_url+'/3/',auth=self.auth)
result=r.json()

self.assertEqual(result['name'],'Pm')

# @unittest.skip('skip test_add_group')
def test_add_group(self):
form_data={'name':'Leader'}
r=requests.post(self.base_url+'/',auth=self.auth,data=form_data)
result=r.json()

self.assertEqual(result['name'],'Leader')

def test_update_group(self):
form_data={'name':'Boss'}
r=requests.patch(self.base_url+'/6/',auth=self.auth,data=form_data)
result=r.json()

self.assertEqual(result['name'],'Boss')

def test_detele_group(self):
r=requests.delete(self.base_url+'/6/',auth=self.auth)

self.assertEqual(r.status_code,204)


運(yùn)行方式:打開cmd使用如下命令來(lái)運(yùn)行即可:

D:\django_restful>python manage.py test

上面命令是默認(rèn)測(cè)試全部的用例,如果想測(cè)試部分用例則可以使用如下命令:

測(cè)試指定的測(cè)試類

D:\django_restful>python manage.py test api.tests.UserTest

測(cè)試具體的某一條具體用例

D:\django_restful>python manage.py test api.tests.UserTest.test_get_user

報(bào)錯(cuò)相關(guān)

1.遷移數(shù)據(jù)庫(kù)時(shí)沒有權(quán)限寫入

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文件來(lái)解決此問題。通過在殺毒軟件威脅防護(hù)高級(jí)選項(xiàng)中禁用按訪問掃描,并殺毒軟件設(shè)置為忽略這些擴(kuò)展名來(lái)解決此問題

  • 遷移數(shù)據(jù)庫(kù)時(shí)沒有清除之前的遷移文件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配置錯(cuò)誤

  • 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版本以上 可以使用如下命令 查看當(dāng)前Mysql版本

    mysql -V
    mysql Ver 8.0.1-dmr for Win64 on x86_64 (MySQL Community Server (GPL))

    更多干貨

    • Restful接口開發(fā)與測(cè)試—集成Swagger

    • Restful接口開發(fā)與測(cè)試—Django安裝

    • Restful接口開發(fā)與測(cè)試—Rest簡(jiǎn)介

    • Python接口自動(dòng)化——Requests基礎(chǔ)功能

    • Python接口自動(dòng)化——Requests

    • Jmeter+Ant+Jenkins接口自動(dòng)化測(cè)試平臺(tái)

    • Jmeter+Ant+Jenkins接口自動(dòng)化測(cè)試平臺(tái)

    • Jmeter用例數(shù)據(jù)分離

    • Jmeter CSV文件管理與正則匹配

    • Jmeter變量設(shè)置

    • Jmeter簡(jiǎn)介與安裝

    • 斷言與參數(shù)設(shè)置

    • Jmeter簡(jiǎn)介與安裝

    • Postman批量執(zhí)行與集成Jenkins

    • Mac 環(huán)境Appium自動(dòng)化測(cè)試環(huán)境搭建

    • 眾里尋他千百度—Appium Android 元素定位方式

    • Android自動(dòng)化測(cè)試設(shè)備彈窗處理

    • Appium iOS 元素定位與操作

    • Ubuntu+Docker+STF環(huán)境搭建

    • Anyproxy抓包代理安裝使用

    • Python自動(dòng)化日志收集

    • Android 測(cè)試工具——Monkeyrunner API

    關(guān)注公眾號(hào),更多干貨秒得到

    總結(jié)

    以上是生活随笔為你收集整理的restful接口开发实例_Restful接口开发与测试—接口测试的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 日韩中文字幕免费在线观看 | 亚洲色图14p | 美女一级视频 | 久久久久久国产精品 | 国产中文久久 | 亚洲第一黄 | 老熟妇毛茸茸 | 好大好爽视频 | 国产一国产精品一级毛片 | www.av72 | 久久久久久久久久久综合 | 人人人插 | 干日本少妇 | 亚洲瘦老头同性xxxxx | 国产又粗又长又黄的视频 | 国产主播99 | 久久久久中文字幕亚洲精品 | 激情欧美一区二区免费视频 | 国产又黄又粗 | 精品视频一区在线观看 | 日韩精品久久久久久免费 | 国产欧美精品一区二区 | 美女乱淫| 激情影院内射美女 | 性色av蜜臀av浪潮av老女人 | 国产不卡av在线播放 | 欧美成人高清 | 天天躁日日躁狠狠躁免费麻豆 | 日日噜噜夜夜狠狠久久波多野 | 久久99热这里只频精品6学生 | 国产精品一区二区三区免费观看 | 亚洲成人生活片 | 国产精品网站入口 | 美女精品视频 | 秋霞福利片 | 久草视频播放 | 中文字幕欧美人妻精品 | www亚洲视频 | 蜜桃精品噜噜噜成人av | 日韩中文av在线 | 欧美视频在线观看 | 在线视频一区二区三区四区 | 极品91 | 欧美久久久久久久久中文字幕 | 欧美色老头 | 成年人香蕉视频 | 欧美黑人性受xxxx精品 | 毛片在线观看网站 | 国产suv精品一区二区四 | 久久午夜精品视频 | 国产97色在线 | 国产 | 国产aⅴ精品一区二区三区久久 | 香蕉视频在线观看视频 | 精品人妻无码一区二区色欲产成人 | 国产原创精品 | 国产一级18片视频 | 国产视频一级 | 婷婷色视频 | www国产一区 | 自拍视频在线 | 成人99 | 人妻少妇精品一区二区三区 | 一本大道东京热无码 | www午夜视频| 葵司有码中文字幕二三区 | 少妇系列在线观看 | 国产精品大片 | 日本美女黄视频 | 亚洲AV成人无码一二三区在线 | 日本视频不卡 | 久久久久久黄 | 日本美女视频 | 69亚洲乱人伦 | 日人视频 | 能看的毛片 | 日韩在线三区 | 91美女在线视频 | 日本三级视频在线观看 | 波多野结衣免费看 | 日日色综合 | 超碰精品在线观看 | 欧美三级网站在线观看 | 国产v综合v亚洲欧美久久 | 日韩欧美成人免费视频 | 九一国产视频 | 激情网页 | 夜夜骚av一区二区三区 | 日韩一区二区三区视频 | 大j8黑人w巨大888a片 | 日本xxxx18高清hd | 精品黄色片 | 在线观看网站黄 | 久久激情av| 在线观看的黄色网址 | 日韩一级片视频 | 在线观看欧美日韩视频 | 久久精品色妇熟妇丰满人妻 | 亚洲国内自拍 | 精品人妻人人做人人爽夜夜爽 |