python自動化テスト三部作のrequest+django実現インターフェーステスト


国慶節の時に三編のブログを書きたいです。紹介とまとめてインタフェーステストをします。国慶節の時に子供を連れてきたので、計画通りに完成しなかったです。今日は第二編を完成しました。恥ずかしいです。
ここで私の最初のブログの住所はhttps://www.jb51.net/article/197004.htmです。主にunittestフレームワークを紹介します。興味がある学生は足を運んでみてもいいです。
ここでは余計な話は抜きにして、本題に入ります。
私の考えはこうです。
1、まずdjangoで登録、追加、削除、4つのインターフェースを確認する。
2、excelでテストケースを定義して、エクセルの中の判例を読んで、判例をunittestフレームで組み立てててパッケージします。
3、djangoを起動し、テスト事例を実行する
一、先走りユニティストからdjangoまでの流れ
1、まずDjangoのプロジェクトを作成します。

2、ルートを作成します。ここでは二級ルートを使います。
a、まずプロジェクトディレクトリのurls.pyファイルをappディレクトリの下にコピーします。

b、工程目録のurls.pyファイルを修正して、一級ルートを定義する。

c、appディレクトリのurls.pyファイルを修正して、二級ルートを設定します。ここではデフォルトのadminというルートを削除する必要があります。

d、このルートが指すビューの関数を定義します。

e、djangoを起動します。ここでは9090ポートを使って起動します。私たちのJenkinsポートは8080です。E:\python\unittestForDjango>python manage.py runserver 9090f、ここは起動成功のパターンです。私が閉じ込めている警告は無視できます。ここでDjangoのadminが必要なので、djangoのadminは使えません。

g、ブラウザを開けてdjangoを訪問します。簡単なDjangoプロジェクトはもう開通しました。

3、ビュー関数において、GET要求とPOST要求をそれぞれ処理する方法を定義する。
a、ビュー関数の定義
ここでこのパラメータを通じてブラウザに教えてください。私たちはJSONデータを返します。

return HttpResponse(result, content_type="application/json;charset=utf-8")

def test_login(request):
  method = request.method.upper()
  if method == "GET":
    result = {}
    name = request.GET.get("username",None)
    pwd = request.GET.get("pwd",None)
    result["name"] = name
    result["pwd"] = pwd
    result = json.dumps(result)
    # return HttpResponse(result)
    return HttpResponse(result, content_type="application/json;charset=utf-8")

  else:
    result = {}
    name = request.POST.get("username",None)
    pwd = request.POST.get("pwd",None)
    result["name"] = name
    result["pwd"] = pwd
    result = json.dumps(result)
    return HttpResponse(result,content_type="application/json;charset=utf-8")
b、requestモジュールを使用してPOSTとGET要求を開始する。

#Auther Bob
#--*--conding:utf-8 --*--
import requests
import json


class TestCase(object):
  def __init__(self,username,pwd,url):
    self.username = username
    self.pwd = pwd
    self.url = url


  def get(self):
    #   get  
    url = self.url + "?username=" + str(self.username) + "&" + "pwd=" + str(self.pwd)
    res = requests.get(url=url)
    print(res.text,type(res.text))

  def post(self):
    #   post  
    data = {
      "username" : self.username,
      "pwd" : self.pwd
    }
    res = requests.post(url=self.url,data=data)
    print(res.text)


if __name__ == '__main__':
  url = "http://127.0.0.1:9090/web/login/"
  username = "zhangsan"
  pwd = "123"

  t = TestCase(username,pwd,url)

  t.get()
  t.post()
c、ここではunittestフレームワークを紹介します。テストケースはこのように書くことができます。

import unittest
from test3 import test_request
class TestDjango(unittest.TestCase):
 

  def setUp(self):
    print("unittest       ")

  def tearDown(self):
    print("unittest       ")

  def test_01(self):
    url = "http://127.0.0.1:9090/web/login/"
    username = "zhangsan"
    pwd = "123"
    t = test_request.TestCase(url=url,username=username,pwd=pwd)
  def test_02(self):
    url = "http://127.0.0.1:9090/web/login/"
    username = "zhangsan"
    pwd = "123"
    t = test_request.TestCase(url=url,username=username,pwd=pwd)
    t.post()


if __name__ == '__main__':
  unittest.main(verbosity=2)
d、ここに重複コードがあります。unittestフレームの中のclassimethodを利用して解決できます。テストクラスを実際化したので、前置条件に入れることができます。

import unittest
from test3 import test_request
class TestDjango(unittest.TestCase):
  @classmethod
  def setUpClass(cls):
    url = "http://127.0.0.1:9090/web/login/"
    username = "zhangsan"
    pwd = "123"
    #    t      ,  python               
    cls.t = test_request.TestCase(url=url,username=username,pwd=pwd)

  def setUp(self):
    print("unittest       ")

  def tearDown(self):
    print("unittest       ")

  def test_01(self):
    self.t.get()
  def test_02(self):
    self.t.post()

if __name__ == '__main__':
  unittest.main(verbosity=2)
e、testcaseに断言を入れる

import unittest
from test3 import test_request
class TestDjango(unittest.TestCase):
  @classmethod
  def setUpClass(cls):
    url = "http://127.0.0.1:9090/web/login/"
    username = "zhangsan"
    pwd = "123"
    #    t      ,  python               
    cls.t = test_request.TestCase(url=url,username=username,pwd=pwd)

  def setUp(self):
    print("unittest       ")

  def tearDown(self):
    print("unittest       ")

  def test_01(self):
    res = self.t.get()
    self.assertEqual(200,res.status_code)
  def test_02(self):
    res = self.t.post()
    self.assertEqual(200, res.status_code)

if __name__ == '__main__':
  unittest.main(verbosity=2)
f、testsuiteの導入

import unittest
from unittest import TestLoader

from test3 import test_unittest


if __name__ == '__main__':
  suite = unittest.TestSuite()
  loader = TestLoader()
  test_cases1 = unittest.TestLoader().loadTestsFromModule(test_unittest)
  #        ,          case    
  suite.addTests(test_cases1)
  runner = unittest.TextTestRunner(verbosity=2)
  runner.run(suite)
二、djangoにインターフェースを設計する。
ここでは簡単な例を書いて、ユーザーテーブルを設計し、4つのインターフェースを設計します。
インターフェース1:ログイン
インターフェース2:ユーザーを追加し、ユーザー登録が必要です。
インターフェース3:ユーザーを削除し、ユーザー登録が必要です。
インターフェース4:ユーザーを問い合わせるために、ユーザ登録は必要ありません。
1、まず登録インターフェースを見てください。
a、登録インターフェースに対応するurl
次は一級ルートです。

url(r'^web/', include('unittesstApp1.urls'))
次は二級ルートです。

url(r'^login/', views.test_login),
b、ログインインターフェースのビュー関数

def test_login(request):
  method = request.method.upper()
  if method == "GET":
    returndict = {"code": 200, "error": None}
    username = request.GET.get("username",None)
    password = request.GET.get("password",None)
    if username == "admin" and password == "admin123.":
      request.session["username"] = username
      request.session["password"] = password
      result = json.dumps(returndict)
    else:
      returndict["code"] = 201
      returndict["error"] = "         "
      result = json.dumps(returndict)
    return HttpResponse(result,content_type="application/json;charset=utf-8")
ここで私達はcookiesの代わりにsessionを使いました。
2、ユーザーインターフェースを追加する
a、ユーザー対応のurlを増やす
一級ルートと登録インターフェース、下は二級ルートです。

url(r'^add/', views.test_add),
b、ユーザーインターフェースに対応するビュー関数を追加し、ここでは各種の異常処理を行い、ユーザーがログインしているかどうか、つまりクッキーを持っているかどうかを判断します。

def test_add(request):
  method = request.method.upper()
  if method == "POST":
    returndict = {"code": 200, "error": None}
    username = request.session.get("username",None)
    password = request.session.get("password",None)

    if username == "admin" and password == "admin123.":
      newusername = request.POST.get("username",None)
      age = request.POST.get("age",None)
      sex = request.POST.get("sex",None)
      pwd = request.POST.get("pwd",None)
      userinfo = [newusername,age,sex,pwd]
      print(userinfo)
      if not "None" in userinfo and all(userinfo):
        if models.userInfo.objects.filter(username = userinfo[0]).exists():
          returndict["error"] = "{username} is exists,please add a new username".format(username = username)
          returndict["code"] = 201
          result = json.dumps(returndict)
          return HttpResponse(result, content_type="application/json;charset=utf-8")
        else:
          models.userInfo.objects.create(
            username = newusername,
            age = age,
            sex = sex,
            pwd = pwd
          )
          if models.userInfo.objects.filter(username=userinfo[0]).exists():
            result = json.dumps(returndict)
            return HttpResponse(result, content_type="application/json;charset=utf-8")
          else:
            returndict["error"] = "{username} is error,please retry add".format(username=username)
            returndict["code"] = 201
            result = json.dumps(returndict)
            return HttpResponse(result, content_type="application/json;charset=utf-8")
      else:
        returndict["error"] = "must input username,age,sex,pwd"
        returndict["code"] = 201
        result = json.dumps(returndict)
        return HttpResponse(result, content_type="application/json;charset=utf-8")
    else:
      returndict = {"code": 201, "error": "         "}
      result = json.dumps(returndict)
      return HttpResponse(result, content_type="application/json;charset=utf-8")
3、インターフェースを削除する
a、ユーザー対応のurlを削除する
一級ルートと登録インターフェースは、ここでは二級ルートしか見られません。

 url(r'^del/', views.del_user),
b、インターフェースの対応するビュー関数を削除します。ここでは各種の異常処理を行いました。ユーザーが登録するかどうかの検査もしました。cookiesを検査して実現します。

def del_user(request):
  method = request.method.upper()
  if method == "POST":
    returndict = {"code": 200, "error": None}
    username = request.session.get("username",None)
    password = request.session.get("password",None)
    if username == "admin" and password == "admin123.":
      delusername = request.POST.get("username",None)
      print(delusername)
      if delusername != None:
        if models.userInfo.objects.filter(username=delusername).exists():
          delid = models.userInfo.objects.get(username=delusername).id
          print(delid)
          try:
            models.userInfo.objects.get(id=delid).delete()
          except Exception as e:
            returndict = {"code": 201, "error": e}
            result = json.dumps(returndict)
            return HttpResponse(result, content_type="application/json;charset=utf-8")
          else:
            result = json.dumps(returndict)
            return HttpResponse(result, content_type="application/json;charset=utf-8")
        else:
          returndict = {"code": 201, "error": "{username} is not exists".format(username = delusername)}
          result = json.dumps(returndict)
          return HttpResponse(result, content_type="application/json;charset=utf-8")
      else:
        returndict = {"code": 201, "error": "you must input a username"}
        result = json.dumps(returndict)
        return HttpResponse(result, content_type="application/json;charset=utf-8")

    else:
      returndict = {"code": 201, "error": "username or password is error"}
      result = json.dumps(returndict)
      return HttpResponse(result, content_type="application/json;charset=utf-8")
4、表示インターフェース
a、インターフェース対応のurlを確認する
一級ルートと登録インターフェースurl、下は二級ルートです。

url(r'^scan/', views.get_user),
b、インターフェースの対応するurlを確認します。ここではユーザーがログインしているかどうかを検査しないで、直接に調べたデータをお客様に返します。もし問い合わせが間違ったら、エラーの情報を返します。

def get_user(request):
  method = request.method.upper()
  returndict = {"code": 200, "userinfo": None}
  if method == "GET":
    try:
      alluser = models.userInfo.objects.all().values_list("username")
      alluserlist = []
      for i in alluser:
        alluserlist.append(i)
        
      returndict["userinfo"] = alluserlist

    except Exception as e:
      returndict["code"] = "201"
      returndict["error"] = e
    finally:
      result = json.dumps(returndict)
      return HttpResponse(result, content_type="application/json;charset=utf-8")
5、データベース内のすべてのインターフェースを削除し、後置条件を作るために設計する。

def del_alluser(request):
  method = request.method.upper()
  if method == "POST":
    returndict = {"code": 200, "error": None}
    username = request.session.get("username", None)
    password = request.session.get("password", None)
    if username == "admin" and password == "admin123.":
      if models.userInfo.objects.all().count() > 0:
        models.userInfo.objects.all().delete()
      result = json.dumps(returndict)
      return HttpResponse(result, content_type="application/json;charset=utf-8")
三、判例準備
1、excelにインターフェーステストの実例を書いてください。

2、定数を定義します。つまり列ごとの値です。

class TestConfig(object):
  def __init__(self):
    self.name = 0
    self.url = 1
    self.method = 2
    self.cookies = 3
    self.data = 4
    self.res = 5
    self.exec = 6

  def getname(self):
    return self.name

  def geturl(self):
    return self.url

  def getmethod(self):
    return self.method

  def getcookies(self):
    return self.cookies

  def getdata(self):
    return self.data

  def getres(self):
    return self.res

  def getexec(self):
    return self.exec
3、エクセルの種類を定義します。エクセルから判例を読みます。

import xlrd
import os

class testexcel(object):
  casepath = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "case", "testcase.xlsx")

  def __init__(self):
    self.casepath = testexcel.casepath
    self.execlobj = xlrd.open_workbook(self.casepath)
    self.sheetobj = self.execlobj.sheet_by_index(0)


  def get_excel_data(self,row,col):
    max_row = self.get_excel_max_row()
    max_col = self.get_excel_max_col()
    if row > max_row -1 or col > max_col - 1:
      return False
    else:
      data = self.sheetobj.cell_value(row,col)
      return data


  def get_excel_max_row(self):
    r_num = self.sheetobj.nrows
    return r_num


  def get_excel_max_col(self):
    c_num = self.sheetobj.ncols
    return c_num
4、私たちのインターフェース関数を定義する

import requests
import json


class TestLogin(object):
  def __init__(self,username,pwd,url):
    self.username = username
    self.pwd = pwd
    self.url = url

  def get(self):
    #   get  
    url = self.url + "?username=" + str(self.username) + "&" + "password=" + str(self.pwd)
    res = requests.get(url=url,
              headers={
           "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
         })
    # print(json.loads(res.text))
    return res

  def post(self):
    #   post  
    data = {
      "username" : self.username,
      "pwd" : self.pwd
    }
    res = requests.post(url=self.url,
              data=data,
              headers={
                "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
              },
              )
    # print(res.text)
    return res


class TestAdd(object):
  def __init__(self,username,age,sex,pwd,cookies,url):
    self.username = username
    self.age = age
    self.sex = sex
    self.pwd = pwd
    self.url = url
    self.cookies = cookies
  def post(self):
    #   post  
    data = {
      "username" : self.username,
      "pwd" : self.pwd,
      "age" : self.age,
      "sex" : self.sex
    }
    res = requests.post(url=self.url,
              data=data,
              headers={
                "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
              },
              cookies=self.cookies,
              )
    # print(res.text)
    return res


class Testdel(object):
  def __init__(self, username,cookies,url):
    self.username = username
    self.cookies = cookies
    self.url = url

  def post(self):
    #   post  
    data = {
      "username": self.username,
    }
    res = requests.post(url=self.url,
              data=data,
              headers={
                "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
              },
              cookies=self.cookies,
              )
    # print(res.text)
    return res


class Testscan(object):
  def __init__(self,url):
    self.url = url
  def get(self):
    res = requests.get(url=self.url,
              headers={
                "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
              },
              cookies=None,
              )
    return res
5、試験事例の定義

import unittest
from test3 import test_request
import json
from util import test_json
from util import test_excel
from case import testconfig
import requests

class TestDjango(unittest.TestCase):
  @classmethod
  def setUpClass(cls):
    cls.alldata = test_json.testjson()

  @classmethod
  def tearDownClass(cls):
    url = "http://127.0.0.1:9090/web/login/" + "?username=" + "admin" + "&" + "password=" + "admin123."
    res = requests.get(url=url,
              headers={
           "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
         })
    url = "http://127.0.0.1:9090/web/delall/"
    requests.post(url=url,
           headers={
             "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
           },
           cookies = res.cookies
           )


  def get_cookies(self):
    url = "http://127.0.0.1:9090/web/login/" + "?username=" + "admin" + "&" + "password=" + "admin123."
    res = requests.get(url=url,
              headers={
           "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
         })
    # print(json.loads(res.text))
    return res.cookies

  @unittest.skip('noexec')
  def test_login_ok(self):
    row = 1
    configobj = testconfig.TestConfig()
    excelobj = test_excel.testexcel()
    execstatus = excelobj.get_excel_data(row,configobj.getexec())
    if execstatus == "YES":
      cookiesstatus = excelobj.get_excel_data(row, configobj.getcookies())
      if cookiesstatus == "YES":
        cookies = self.get_cookies()
      else:
        cookies = None
      data = excelobj.get_excel_data(row, configobj.getdata())
      data = json.loads(data)
      url = excelobj.get_excel_data(row, configobj.geturl())
      res = excelobj.get_excel_data(row, configobj.getres())
      method = excelobj.get_excel_data(row, configobj.getmethod())
      if method == "GET":
        testobj = test_request.TestLogin(data["username"],data["pwd"],url)
        resobj = testobj.get()
        self.assertEqual(int(res),json.loads(resobj.text)["code"])

  @unittest.skip('noexec')
  def test_login_pwd_error(self):
    row = 2
    configobj = testconfig.TestConfig()
    excelobj = test_excel.testexcel()
    execstatus = excelobj.get_excel_data(row,configobj.getexec())
    if execstatus == "YES":
      cookiesstatus = excelobj.get_excel_data(row, configobj.getcookies())
      if cookiesstatus == "YES":
        cookies = self.get_cookies()
      else:
        cookies = None
      data = excelobj.get_excel_data(row, configobj.getdata())
      data = json.loads(data)
      url = excelobj.get_excel_data(row, configobj.geturl())
      res = excelobj.get_excel_data(row, configobj.getres())
      method = excelobj.get_excel_data(row, configobj.getmethod())
      if method == "GET":
        testobj = test_request.TestLogin(data["username"],data["pwd"],url)
        resobj = testobj.get()
        self.assertEqual(int(res),json.loads(resobj.text)["code"])

  @unittest.skip('noexec')
  def test_login_user_error(self):
    row = 3
    configobj = testconfig.TestConfig()
    excelobj = test_excel.testexcel()
    execstatus = excelobj.get_excel_data(row,configobj.getexec())
    if execstatus == "YES":
      cookiesstatus = excelobj.get_excel_data(row, configobj.getcookies())
      if cookiesstatus == "YES":
        cookies = self.get_cookies()
      else:
        cookies = None
      data = excelobj.get_excel_data(row, configobj.getdata())
      data = json.loads(data)
      url = excelobj.get_excel_data(row, configobj.geturl())
      res = excelobj.get_excel_data(row, configobj.getres())
      method = excelobj.get_excel_data(row, configobj.getmethod())
      if method == "GET":
        testobj = test_request.TestLogin(data["username"],data["pwd"],url)
        resobj = testobj.get()
        self.assertEqual(int(res),json.loads(resobj.text)["code"])

  @unittest.skip('noexec')
  def test_user_pwd_error(self):
    row = 4
    configobj = testconfig.TestConfig()
    excelobj = test_excel.testexcel()
    execstatus = excelobj.get_excel_data(row,configobj.getexec())
    if execstatus == "YES":
      cookiesstatus = excelobj.get_excel_data(row, configobj.getcookies())
      if cookiesstatus == "YES":
        cookies = self.get_cookies()
      else:
        cookies = None
      data = excelobj.get_excel_data(row, configobj.getdata())
      data = json.loads(data)
      url = excelobj.get_excel_data(row, configobj.geturl())
      res = excelobj.get_excel_data(row, configobj.getres())
      method = excelobj.get_excel_data(row, configobj.getmethod())
      if method == "GET":
        testobj = test_request.TestLogin(data["username"],data["pwd"],url)
        resobj = testobj.get()
        self.assertEqual(int(res),json.loads(resobj.text)["code"])

  @unittest.skip('noexec')
  def test_insert_ok(self):
    row = 5
    configobj = testconfig.TestConfig()
    excelobj = test_excel.testexcel()
    execstatus = excelobj.get_excel_data(row, configobj.getexec())
    if execstatus == "YES":
      cookiesstatus = excelobj.get_excel_data(row, configobj.getcookies())
      if cookiesstatus == "YES":
        cookies = self.get_cookies()
      else:
        cookies = None
      data = excelobj.get_excel_data(row, configobj.getdata())
      data = json.loads(data)
      url = excelobj.get_excel_data(row, configobj.geturl())
      res = excelobj.get_excel_data(row, configobj.getres())
      method = excelobj.get_excel_data(row, configobj.getmethod())
      if method == "POST":
        testobj = test_request.TestAdd(data["username"], data["age"],data["sex"], data["pwd"],cookies,url)
        resobj = testobj.post()
        print(json.loads(resobj.text))
        self.assertEqual(int(res), json.loads(resobj.text)["code"])

  @unittest.skip('noexec')
  def test_insert_nologin(self):
    row = 6
    configobj = testconfig.TestConfig()
    excelobj = test_excel.testexcel()
    execstatus = excelobj.get_excel_data(row, configobj.getexec())
    if execstatus == "YES":
      cookiesstatus = excelobj.get_excel_data(row, configobj.getcookies())
      if cookiesstatus == "YES":
        cookies = self.get_cookies()
      else:
        cookies = None
      data = excelobj.get_excel_data(row, configobj.getdata())
      data = json.loads(data)
      url = excelobj.get_excel_data(row, configobj.geturl())
      res = excelobj.get_excel_data(row, configobj.getres())
      method = excelobj.get_excel_data(row, configobj.getmethod())
      if method == "POST":
        testobj = test_request.TestAdd(data["username"], data["age"],data["sex"], data["pwd"],cookies,url)
        resobj = testobj.post()
        print(json.loads(resobj.text))
        self.assertEqual(int(res), json.loads(resobj.text)["code"])

  @unittest.skip("noexec")
  def test_insert_user_error(self):
    row = 7
    configobj = testconfig.TestConfig()
    excelobj = test_excel.testexcel()
    execstatus = excelobj.get_excel_data(row, configobj.getexec())
    if execstatus == "YES":
      cookiesstatus = excelobj.get_excel_data(row, configobj.getcookies())
      if cookiesstatus == "YES":
        cookies = self.get_cookies()
      else:
        cookies = None
      data = excelobj.get_excel_data(row, configobj.getdata())
      data = json.loads(data)
      url = excelobj.get_excel_data(row, configobj.geturl())
      res = excelobj.get_excel_data(row, configobj.getres())
      method = excelobj.get_excel_data(row, configobj.getmethod())
      if method == "POST":
        testobj = test_request.TestAdd(data.get("username",None), data.get("age",None), data.get("sex",None), data.get("pwd",None), cookies, url)
        resobj = testobj.post()
        print(json.loads(resobj.text))
        self.assertEqual(int(res), json.loads(resobj.text)["code"])

  @unittest.skip('no exec')
  def test_insert_pwd_error(self):
    row = 8
    configobj = testconfig.TestConfig()
    excelobj = test_excel.testexcel()
    execstatus = excelobj.get_excel_data(row, configobj.getexec())
    if execstatus == "YES":
      cookiesstatus = excelobj.get_excel_data(row, configobj.getcookies())
      if cookiesstatus == "YES":
        cookies = self.get_cookies()
      else:
        cookies = None
      data = excelobj.get_excel_data(row, configobj.getdata())
      data = json.loads(data)
      url = excelobj.get_excel_data(row, configobj.geturl())
      res = excelobj.get_excel_data(row, configobj.getres())
      method = excelobj.get_excel_data(row, configobj.getmethod())
      if method == "POST":
        testobj = test_request.TestAdd(data.get("username",None), data.get("age",None), data.get("sex",None), data.get("pwd",None), cookies, url)
        resobj = testobj.post()
        print(json.loads(resobj.text))
        self.assertEqual(int(res), json.loads(resobj.text)["code"])

  @unittest.skip("no exec")
  def test_insert_sex_error(self):
    row = 9
    configobj = testconfig.TestConfig()
    excelobj = test_excel.testexcel()
    execstatus = excelobj.get_excel_data(row, configobj.getexec())
    if execstatus == "YES":
      cookiesstatus = excelobj.get_excel_data(row, configobj.getcookies())
      if cookiesstatus == "YES":
        cookies = self.get_cookies()
      else:
        cookies = None
      data = excelobj.get_excel_data(row, configobj.getdata())
      print(data)
      data = json.loads(data)
      print(data)
      url = excelobj.get_excel_data(row, configobj.geturl())
      res = excelobj.get_excel_data(row, configobj.getres())
      method = excelobj.get_excel_data(row, configobj.getmethod())
      if method == "POST":
        testobj = test_request.TestAdd(data.get("username",None), data.get("age",None), data.get("sex",None), data.get("pwd",None), cookies, url)
        resobj = testobj.post()
        print(json.loads(resobj.text))
        self.assertEqual(int(res), json.loads(resobj.text)["code"])

  @unittest.skip('no exec')
  def test_insert_age_error(self):
    row = 10
    configobj = testconfig.TestConfig()
    excelobj = test_excel.testexcel()
    execstatus = excelobj.get_excel_data(row, configobj.getexec())
    if execstatus == "YES":
      cookiesstatus = excelobj.get_excel_data(row, configobj.getcookies())
      if cookiesstatus == "YES":
        cookies = self.get_cookies()
      else:
        cookies = None
      data = excelobj.get_excel_data(row, configobj.getdata())
      print(data)
      data = json.loads(data)
      print(data)
      url = excelobj.get_excel_data(row, configobj.geturl())
      res = excelobj.get_excel_data(row, configobj.getres())
      method = excelobj.get_excel_data(row, configobj.getmethod())
      if method == "POST":
        testobj = test_request.TestAdd(data.get("username",None), data.get("age",None), data.get("sex",None), data.get("pwd",None), cookies, url)
        resobj = testobj.post()
        print(resobj.text)
        print(json.loads(resobj.text))
        self.assertEqual(int(res), json.loads(resobj.text)["code"])

  @unittest.skip('no exec')
  def test_insert_user_exist(self):
    row = 11
    configobj = testconfig.TestConfig()
    excelobj = test_excel.testexcel()
    execstatus = excelobj.get_excel_data(row, configobj.getexec())
    if execstatus == "YES":
      cookiesstatus = excelobj.get_excel_data(row, configobj.getcookies())
      if cookiesstatus == "YES":
        cookies = self.get_cookies()
      else:
        cookies = None
      data = excelobj.get_excel_data(row, configobj.getdata())
      print(data)
      data = json.loads(data)
      print(data)
      url = excelobj.get_excel_data(row, configobj.geturl())
      res = excelobj.get_excel_data(row, configobj.getres())
      method = excelobj.get_excel_data(row, configobj.getmethod())
      if method == "POST":
        testobj = test_request.TestAdd(data.get("username", None), data.get("age", None), data.get("sex", None),
                        data.get("pwd", None), cookies, url)
        resobj = testobj.post()
        print(resobj.text)
        print(json.loads(resobj.text))
        self.assertEqual(int(res), json.loads(resobj.text)["code"])

  def test_get_user(self):
    row = 12
    configobj = testconfig.TestConfig()
    excelobj = test_excel.testexcel()
    execstatus = excelobj.get_excel_data(row, configobj.getexec())
    if execstatus == "YES":
      cookiesstatus = excelobj.get_excel_data(row, configobj.getcookies())
      if cookiesstatus == "YES":
        cookies = self.get_cookies()
      else:
        cookies = None

      url = excelobj.get_excel_data(row, configobj.geturl())
      res = excelobj.get_excel_data(row, configobj.getres())
      method = excelobj.get_excel_data(row, configobj.getmethod())
      if method == "POST":
        testobj = test_request.Testscan(url)
        resobj = testobj.get()
        # print(resobj.text
        print(json.loads(resobj.text))
        self.assertEqual(int(res), json.loads(resobj.text)["code"])

  @unittest.skip('no exec')
  def test_del_user(self):
    row = 13
    configobj = testconfig.TestConfig()
    excelobj = test_excel.testexcel()
    execstatus = excelobj.get_excel_data(row, configobj.getexec())
    if execstatus == "YES":
      cookiesstatus = excelobj.get_excel_data(row, configobj.getcookies())
      if cookiesstatus == "YES":
        cookies = self.get_cookies()
      else:
        cookies = None
      data = excelobj.get_excel_data(row, configobj.getdata())
      print(data)
      data = json.loads(data)
      print(data)
      url = excelobj.get_excel_data(row, configobj.geturl())
      res = excelobj.get_excel_data(row, configobj.getres())
      method = excelobj.get_excel_data(row, configobj.getmethod())
      if method == "POST":
        testobj = test_request.Testdel(data.get("username", None),cookies, url)
        resobj = testobj.post()
        print(resobj.text)
        print(json.loads(resobj.text))
        self.assertEqual(int(res), json.loads(resobj.text)["code"])


  def test_del_noexistuser(self):
    row = 14
    configobj = testconfig.TestConfig()
    excelobj = test_excel.testexcel()
    execstatus = excelobj.get_excel_data(row, configobj.getexec())
    if execstatus == "YES":
      cookiesstatus = excelobj.get_excel_data(row, configobj.getcookies())
      if cookiesstatus == "YES":
        cookies = self.get_cookies()
      else:
        cookies = None
      data = excelobj.get_excel_data(row, configobj.getdata())
      print(data)
      data = json.loads(data)
      print(data)
      url = excelobj.get_excel_data(row, configobj.geturl())
      res = excelobj.get_excel_data(row, configobj.getres())
      method = excelobj.get_excel_data(row, configobj.getmethod())
      if method == "POST":
        testobj = test_request.Testdel(data.get("username", None),cookies, url)
        resobj = testobj.post()
        print(resobj.text)
        print(json.loads(resobj.text))
        self.assertEqual(int(res), json.loads(resobj.text)["code"])
6、unit testのsuitを導入し、組織例

import unittest
from unittest import TestLoader

from test3 import test_unittest


if __name__ == '__main__':
  suite = unittest.TestSuite()
  loader = TestLoader()
  test_cases1 = unittest.TestLoader().loadTestsFromModule(test_unittest)
  #        ,          case    
  suite.addTests(test_cases1)
  runner = unittest.TextTestRunner(verbosity=2)
  runner.run(suite)
四、実行例
1、スタートdjango
E:\python\unittest ForDjango>python manage.py runserver 9090
Performing system checks…
System check identifedのissues(0 silenced)
October 19,2019-22:46:42
Django version 1.11.7、using settings'unittest ForDjango.settings'
Starting development server athttp://127.0.0.1:9090/
Quit the server with CTRL-BREAK
2、試験キットの実行

test_del_noexistuser (test3.test_unittest.TestDjango) ... {"username":"test1"}
{'username': 'test1'}
ok
test_del_user (test3.test_unittest.TestDjango) ... skipped 'no exec'
test_get_user (test3.test_unittest.TestDjango) ... {"code": 201, "error": "test1 is not exists"}
{'code': 201, 'error': 'test1 is not exists'}
{'code': 200, 'userinfo': []}
ok
test_insert_age_error (test3.test_unittest.TestDjango) ... skipped 'no exec'
test_insert_nologin (test3.test_unittest.TestDjango) ... skipped 'noexec'
test_insert_ok (test3.test_unittest.TestDjango) ... skipped 'noexec'
test_insert_pwd_error (test3.test_unittest.TestDjango) ... skipped 'no exec'
test_insert_sex_error (test3.test_unittest.TestDjango) ... skipped 'no exec'
test_insert_user_error (test3.test_unittest.TestDjango) ... skipped 'noexec'
test_insert_user_exist (test3.test_unittest.TestDjango) ... skipped 'no exec'
test_login_ok (test3.test_unittest.TestDjango) ... skipped 'noexec'
test_login_pwd_error (test3.test_unittest.TestDjango) ... skipped 'noexec'
test_login_user_error (test3.test_unittest.TestDjango) ... skipped 'noexec'
test_user_pwd_error (test3.test_unittest.TestDjango) ... skipped 'noexec'

----------------------------------------------------------------------
Ran 14 tests in 1.466s

OK (skipped=12)
ここで、python自動化テスト三部作のrequest+djangoインタフェーステストを実現する文章を紹介します。これに関連して、request djangoインターフェイステストの内容をもっと紹介します。私達の以前の文章を検索してください。