如何設計與資料上下文無關的介面測試用例

2022-07-04 05:45:15 字數 1624 閱讀 3031

我們在做介面測試的時候很可能設計出這樣與資料關聯的測試用例。比如

def test_create_user(self):

user = create_user(name="fred", age=29) # 呼叫建立使用者的介面

self.assertequal(user['name'], 'fred')

def test_get_user(self):

user = get_last_created_user() #呼叫獲取最新註冊使用者的介面

self.assertequal(user['name'], 'fred')

這樣的測試用例第一眼看上去是感受不出來問題的。

不過仔細想想,可能會存在下面的問題

為了解決上面的問題,我們可以這樣做

def test_create_user(self):

user = create_user(name="fred", age=29) # 呼叫建立使用者的介面

delete_user(user['id']) # 呼叫刪除介面,將建立的使用者給刪除掉

self.assertequal(user['name'], 'fred')

def test_get_user(self):

user = create_user(name="fred", age=29) # 呼叫建立使用者的介面

user = get_last_created_user() #呼叫獲取最新註冊使用者的介面

delete_user(user['id']) # 呼叫刪除介面,將建立的使用者給刪除掉

self.assertequal(user['name'], 'fred')

這樣一來髒資料問題就解決了,不過用例裡多了很多跟測試邏輯無關的**。

為了將資料處理**跟測試邏輯分開來,下一步我們可以這樣做,以sqlite3為例

import sqlite3

def setup(self):

conn = sqlite3.connect('example.db')

c = conn.cursor()

c.execute("delete * from users")

c.execute("insert into users ......") # 插入一些存量資料,這樣測試翻頁之類的邏輯會容易點

conn.commit()

conn.close()

def test_create_user(self):

user = create_user(name="fred", age=29) # 呼叫建立使用者的介面

self.assertequal(user['name'], 'fred')

def test_get_user(self):

user = create_user(name="fred", age=29) # 呼叫建立使用者的介面

user = get_last_created_user() #呼叫獲取最新註冊使用者的介面

self.assertequal(user['name'], 'fred')

上面的例子裡,setup方法會在每個用例執行之前執行,所以就不需要每條用例都去清理資料了。

程序上下文與中斷上下文的理解

一.什麼是核心態和使用者態 使用者態 使用者程式執行空間。1.程序上下文 1 程序上文 其是指程序由使用者態切換到核心態是需要儲存使用者態時cpu暫存器中的值,程序狀態以及堆疊上的內容,即儲存當前程序的程序上下文,以便再次執行該程序時,能夠恢復切換時的狀態,繼續執行。2 程序下文 其是指切換到核心態...

程序上下文與中斷上下文的理解

使用者態 使用者程式執行空間。1.程序上下文 1 程序上文 其是指程序由使用者態切換到核心態是需要儲存使用者態時cpu暫存器中的值,程序狀態以及堆疊上的內容,即儲存當前程序的程序上下文,以便再次執行該程序時,能夠恢復切換時的狀態,繼續執行。2 程序下文 其是指切換到核心態後執行的程式,即程序執行在核...

程序上下文與中斷上下文的理解

使用者態 使用者程式執行空間。1.程序上下文 1 程序上文 其是指程序由使用者態切換到核心態是需要儲存使用者態時cpu暫存器中的值,程序狀態以及堆疊上的內容,即儲存當前程序的程序上下文,以便再次執行該程序時,能夠恢復切換時的狀態,繼續執行。2 程序下文 其是指切換到核心態後執行的程式,即程序執行在核...