關於python測試c接口的信息

  • 1、如何使用python 語言來實現測試開發
  • 2、如何使用python根據接口文檔進行接口測試
  • 3、python 怎麼調用c語言接口
  • 4、python 接口升級怎麼測試

對於各種驅動接口,Python來編寫測試用例的好處是:由於Python不需要編譯,你所執行的也就是你所編寫的,當發生異常的時候,你無須打開集成開發環境,加載測試工程、並調試,你能夠很方便的看到python測試腳本的內容,什麼地方出了異常可以立刻發現,例如:

from ctypes import *

rc =c_int(-12345);

dll = windll.LoadLibrary(“dmodbc.dll”);#加載被測試組件

#=================#

SQLHANDLE_env = pointer(c_long(0));

SQLHANDLE_cnn = pointer(c_long(0));

SQLHANDLE_stmt = pointer(c_long(0));

pdns = c_char_p(“FASTDB”);

puid = c_char_p(“SYSDBA”);

ppwd = c_char_p(“SYSDBA”);

#env handle

rc = dll.SQLAllocHandle(1,None,byref(SQLHANDLE_env));

print “result of henv handle alloc :%d” %rc;

#cnn handle

rc = dll.SQLAllocHandle(2,SQLHANDLE_env,byref(SQLHANDLE_cnn));

print “result of cnn handle alloc :%d” %rc;

#connect!

rc = dll.SQLConnect(SQLHANDLE_cnn,pdns,-3,puid,-3,ppwd,-3)

print “result of connect :%d” %rc;

#stmt handle

rc = dll.SQLAllocHandle(3,SQLHANDLE_cnn,byref(SQLHANDLE_stmt));

print “result of stmt handle alloc:%d” %rc;

#exec

rc = dll.SQLExecDirect(SQLHANDLE_stmt,”insert into t values(1)”,-3);

print “result of exec:%d” %rc;

#free========================

rc = dll.SQLFreeHandle(3, SQLHANDLE_stmt);

print rc;

rc = dll.SQLDisconnect(SQLHANDLE_cnn);

print rc;

rc = dll.SQLFreeHandle(2, SQLHANDLE_cnn);

print rc;

rc = dll.SQLFreeHandle(1, SQLHANDLE_env);

print rc;

在上面我們可以看到,Python調用c/c++接口是十分容易的,只需要把動態庫加載進來,然後把這個動態庫當作一個對象實例來使用就可以了。下面將是一個使用ado.net接口的例子:

import System;

from Dm import *#Dm是DMDBMS提供的ado.Net的DataProvider

#print dir(Dm.DmCommand);

i =0;

cnn = Dm.DmConnection(“server = 127.0.0.1; User ID = SYSDBA; PWD = SYSDBA; Database = SYSTEM; port = 12345”);

cmd = Dm.DmCommand();

cmd.Connection = cnn;

cmd.CommandText = “insert into t values(1);”;

cnn.Open();

i=cmd.ExecuteNonQuery();

print i;

cmd.Dispose();

cnn.Close();

可以看到,.net對象的使用與在VisualStdio上進行開發幾乎沒有任何區別。

通過使用Python進行測試用例的開發,最大的好處莫過於:學習成本非常低,測試工程師只需要學習Python,對於其他語言稍有了解就可以了。同時只需要少量的測試開發工程師對Python測試框架進行維護。

這樣的好處就是便於測試人員將精力專精在一個方向,免於「什麼都會一點,但什麼都不精」的情況。當然測試人員具備廣闊的知識面,會使用各種常見的開發工具與平台是好事情,並且也是必要的,不過在短時間內要求迅速能夠勝任大多數任務也是企業在人才培養上的期望目標。

1,關於requests

requests是python的一個http客戶端庫,設計的非常簡單,專門為簡化http測試寫的。

2,開發環境

mac下面搭建開發環境非常方便。

sudo easy_install pip

sudo pip install requests

測試下:python命令行

import requests

r = requests.get(”, auth=(‘user’, ‘pass’))

r.status_code

200

r.headers[‘content-type’]

‘application/json; charset=utf8’

r.encoding

‘utf-8’

r.text

u'{type:User…’

r.json()

{u’private_gists’: 419, u’total_private_repos’: 77, …}

開發工具,之前使用sublime,發現運行報錯,不識別table字符。

IndentationError: unindent does not match any outer indentation level

非常抓狂的錯誤,根本找不到代碼哪裡有問題了。甚至開始懷疑人生了。

python的這個空格區分代碼真的非常讓人抓狂。開始懷念有大括號,分號的語言了。

徹底解決辦法,直接換個IDE工具。使用牛刀,IDA開發。

直接下載社區版本即可,因為就是寫個腳本啥的,沒有用到太複雜的框架。

果然效果非常好,直接格式下代碼,和java的一樣好使,可以運行可以debug。右鍵直接運行成功。

3,測試接口

沒有啥太複雜的,直接使用requests框架即可。

#!/usr/bin/python

# -*- coding: utf-8 -*-

################

import requests

#測試百度

def baidu_func(url):

headers = {}

params = {}

req = requests.post(url, headers=headers, params=params)

print(req.text)

if __name__ == ‘__main__’:

url =

baidu_func(url)

4,總結

測試非常重要,尤其是對外的接口出現的漏洞,需要花時間去仔細測試,同時要仔細分析代碼。

安全是挺重要的事情,要花時間去琢磨。

python學習還是非常容易學習的,一個小時就能把語法學會。

同時滲透測試,安全掃描的好多工具也是python寫的。PyCharm CE版本的開發工具足夠強大,能夠幫你快速學習python。

如果想快速做點界面的開發,wxPython是非常不錯的選擇。

ctypes:  可直接調用c語言動態鏈接庫。

使用步驟:

1 編譯好自己的動態連接庫

2 利用ctypes載入動態連接庫

3 用ctype調用C函數接口時,需要將python變量類型做轉換後才能作為函數參數,轉換原則見下圖:

4 Python若想獲取ctypes調用的C函數返回值,需要先指定返回值類型。我們將在接下來的完整Sample中看到如何使用。

#Step 1:  test.c#include stdio.h

int add(int a, int b)

{

    return a + b;

}#Step 2: 編譯動態鏈接庫 ( 如何編譯動態鏈接庫在本文不詳解,網上資料一大堆。)gcc -fPIC -shared test.c -o libtest.so  

#Step 3:  test.py

from ctypes import *mylib = CDLL(“libtest.so”)   或者   cdll.LoadLibrary(“libtest.so”)   add = mylib.add

add.argtypes = [c_int, c_int] # 參數類型,兩個int(c_int是ctypes類型,見上表)

add.restype = c_int # 返回值類型,int (c_int 是ctypes類型,見上表)

sum = add(3, 6)

測試思路:

1、先把每個http接口一個一個寫腳本測試。(提交的json串直接放在data字典中,這裡沒有用到excel等寫測試用例,測試用例直接用腳本實現。)

2、寫完所有接口的測試腳本後,由於一個接口有好幾個測試用例,所有要把同一個接口的py腳本封裝成方法,每一個接口封裝成一個接口類。

3、用testsuite直接調用這些接口類,構造測試集;或利用unittest自動識別測試用例,TestLoader類中提供的discover()方法。

(命名規則:接口名稱要以test_XXX開頭)

就好把所有的接口測試用例連起來構建自動化測試了。

4、最後利用HTMLTestRunner生成測試報告。

原創文章,作者:U7ARS,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/127261.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
U7ARS的頭像U7ARS
上一篇 2024-10-03 23:13
下一篇 2024-10-03 23:13

相關推薦

  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29

發表回復

登錄後才能評論