테스트 목록이 포함 된 큰 json 파일이 있습니다. Json 파일에는 몇 가지 설정 항목과 테스트 목록이있는 테스트 클래스의 이름이 포함 된 여러 파일 이름이 있습니다. 다음은 이러한 json 파일의 예입니다.
{
"filename1.py": {
"ClassName": [
"setupSection": [
here will be list of sqls which should be performed before tests
],
"listOfTests": {
"test1Name": [
{ here will be query }, {here will be expected result}
],
"test1Name": [
{ here will be query }, {here will be expected result}
]
}
},
"filename2.py": {
"ClassName": [
"setupSection": [
here will be list of sqls which should be performed before tests
],
"listOfTests": {
"test1Name": [
{ here will be query }, {here will be expected result}
],
"test1Name": [
{ here will be query }, {here will be expected result}
]
}
}
}
그리고 Java 또는 Scala로 작성된 몇 가지 클래스로이 테스트를 수행해야합니다. 따라서 json 파일에서 모든 테스트를 수행하는 Java 또는 / 및 Scala로 작성된 1-3 개의 클래스가 있어야합니다. 가능합니까?
specs2를 사용하여 가능합니다 . Json 파일을 역 직렬화 할 수 있다고 가정 해 보겠습니다.
case class Query(query: Query)
case class Test(name: String, query: Query, result: String)
case class TestFile(setup: Query, tests: List[Test])
그런 다음 다음 사양을 만들 수 있습니다.
import org.specs2._
class JsonSpec(path: String) extends Specification {
lazy val files: List[TestFile] = readFilesFromJson(path)
def createTests(tests: List[Test]): Fragments =
Fragments.foreach(tests) { test =>
s2"""|
|${test.name ! executeQuery(test.query) must_== test.result}""".stripMargin
}
def is =
Fragments.foreach(files) { file =>
s2"""|
|${step(executeQuery(file.setup))}
|${createTests(file.tests)
""".stripMargin
}
// load the Json file
def readFilesFromJson(path: String): List[TestFile] =
???
// execute the query and return the result
// as a String
def executeQuery(query: Query): String =
???
}
문제가있는 경우 작은 Github 프로젝트를 생성 해 주시면 도움을 드릴 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다