本课程是python flask+微信小程序完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。从基础语法入手,易于掌握,构建MVC架构,增进对小程序和后端API的理解认识。深刻浅出带你进阶全栈工程师课程,帮助你快速提高项目经验,掌握项目开发技巧,提升项目中解决问题的能力。html
适合人群
Python web后端开发,想进阶全栈殊不知道如何系统学习的你
技术储备要求
Python语法基础、Web后端开发基础,对前端有所了解前端
添加依賴java
org.testng
testng
6.8.8
test
運用DataProvider提供數據有兩種方式:
把測試代码和測試數據放在同一個類中;
把一切的數據提供都單獨寫在一個類里面,當測試數據比擬多時,這種辦法利於維護。
用法python
- 常規用法
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class ParamTestWithDataProvider1 {
@DataProvider(name = "test1")
public static Object[][] primeNumbers() {
return new Object[][] { { 2, true ,"hi"}, { 6, false ,"test"}, { 19, true ,"good"},
{ 22, false ,"aha"}, { 23, true ,"loo"} };
}
//參數必须要分歧
@Test(dataProvider = "test1")
public void testPrimeNumberChecker(Integer inputNumber,
Boolean expectedResult, String test) {
System.out.println(inputNumber + " " + expectedResult+" "+test);
}
}
- 帶Method參數的DataProvider
假如但愿DataProvider對不一样的Test辦法運用不一样的dataprovider,那麼在DataProvider中能夠運用Method參數
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.lang.reflect.Method;
public class ParamTestWithDataProvider2 {
@Test(dataProvider = "provider")
public void getFirst(String name, int age) {
System.out.println("第一組"+name);
}
@Test(dataProvider = "provider")
public void getSecond(String name, int age) {
System.out.println("第二組 " + name);
}
@DataProvider(name = "provider")
public Object[][] provider(Method method) {
Object[][] objects;
if (method.getName().equals("getFirst")) { //假如調用該DataProvider的函數是getFirst,那麼就返回這個數組
objects = new Object[][] { { "cq1", 20 }, { "cq2", 22 } };
} else if (method.getName().equals("getSecond")) {//假如調用該DataProvider的函數是getSecond,那麼就返回這個數組
objects = new Object[][] { { "cq3", 20 }, { "cq4", 22 } };
} else { //假如調用該DataProvider的函數不是getFirst也不是getSecond,那麼就返回這個數組
objects = new Object[][] { {"cq5",33}, {"cq6",34} };
}
return objects;
}
}web
- 經過DataProviderClass 把測試數據文件引過來
import org.testng.annotations.DataProvider;
public class DataProviderMethod {br/>//無指定數據稱號,默許運用辦法名
@DataProvider
public static Object[][] NoNameMethod(){
return new Object[][]{{"DataWithNoName2"},
{"DataWithNoName3"}
};
}
//指定稱號1
@DataProvider(name="dataprovider1")
br/>{"DataWithNoName1"},
{"DataWithNoName2"},
{"DataWithNoName3"}
};
}
//指定稱號1
@DataProvider(name="dataprovider1")
public static Object[][] dataProvider1(){
return new Object[][]{{"dataprovider1-2"}
};
}
//指定稱號2
@DataProvider(name="dataprovider2")
br/>{"dataprovider1-1"},
{"dataprovider1-2"}
};
}
//指定稱號2
@DataProvider(name="dataprovider2")
public static Object[][] dataProvider2(){
return new Object[][]{
{"dataprovider2-1"},
{"dataprovider2-2"}
};
}
}
import org.testng.annotations.Test;
public class ParamTestWithDataProvider3 {br/>@Test(dataProvider="NoNameMethod",dataProviderClass=DataProviderMethod.class)public void doTestNG(String testdatas) {}@br/>System.out.println("未指定稱號,數據源名爲辦法名NoNameMethod:"+testdatas);}@Test(dataProvider="dataprovider1",dataProviderClass=DataProviderMethod.class)public void doTestNG1(String testdatas){}@Test(dataProvider="dataprovider2",dataProviderClass=DataProviderMethod.class)br/>System.out.println("指定稱號,數據源稱號選择了dataprovider1:"+testdatas);}@Test(dataProvider="dataprovider2",dataProviderClass=DataProviderMethod.class)public void doTestNG2(String testdatas){System.out.println("指定稱號,數據源稱號選择了dataprovider2:"+testdatas);}}