QuizTrain 2.1.0

QuizTrain 2.1.0

由以下人员维护:David GallagherMark AdamsKeita ItoDane MiluskiMark AdamsCarl Hill-PopperAlan Grubb



QuizTrain 2.1.0

  • 作者
  • Venmo

QuizTrain📝🚆

QuizTrain 是 Venmo 创建的一个框架,允许您使用 Swift 与 TestRail 的 API交互。它支持 iOS、macOS、tvOS 和 watchOS。

要使用 QuizTrain,您必须拥有有效的TestRail 许可证和实例来访问。

许可

QuizTrain 是在 MIT 许可下发布的开源软件。有关详细信息,请参阅 LICENSE 文件。

安装

Carthage

升级到最新版本的 Carthage 后,将以下内容添加到您的 Cartfile 或者 Cartfile.private 文件中

github "venmo/QuizTrain" ~> 2.1.0

有关进一步说明,请参见 向应用程序添加框架。完成后,在您想使用 QuizTrain 的任何 Swift 文件中导入 import QuizTrain

Cocoapods

在你的 Podfile 中添加以下行到你的目标并保存文件

pod 'QuizTrain', '~> 2.1.0'

运行 pod install,打开你的项目 .xcworkspace 文件,你现在应该在代码中能 import QuizTrain

使用方法

创建一个 ObjectAPI 来获取、添加、更新、删除以及在 TestRail 实例上关闭条目。

let objectAPI = ObjectAPI(username: "[email protected]", secret: "your_api_key_or_password", hostname: "yourInstance.testrail.net", port: 443, scheme: "https")

或者,如果您更愿意使用基本 Swift 类型进行工作,您可以直接使用 API。通常,使用 ObjectAPIAPI 更好,因为 API 是一个更低级的抽象。对于差异,请参阅 API.swiftObjectAPI.swift 中的注释。

示例项目

查看 QuizTrain Example 项目,了解如何将 QuizTrain 与 iOS 上的单元测试和 UI 测试集成。

示例代码

以下展示了一些示例。要查看所有示例,请参阅 ObjectAPITests.swift

获取项目中的所有用例

objectAPI.getCases(inProjectWithId: 5) { (outcome) in
    switch outcome {
    case .failure(let error):
        print(error.debugDescription)
    case .success(let cases):
        print(cases) // Do something with cases.
    }
}

添加一个用例

let section: Section = ...
let newCase = NewCase(estimate: nil, milestoneId: nil, priorityId: nil, refs: nil, templateId: nil, title: "New Case Title", typeId: nil, customFields: nil)

objectAPI.addCase(newCase, to: section) { (outcome) in
    switch outcome {
    case .failure(let error):
        print(error.debugDescription)
    case .success(let `case`):
        print(`case`.title) // Do something with the newly created `case`.
    }
}

更新一个套餐

var suite: Suite = ...
suite.description = "Updated description for this suite."
suite.name = "Updated name of this suite."

objectAPI.updateSuite(suite) { (outcome) in
    switch outcome {
    case .failure(let error):
        print(error.debugDescription)
    case .success(let updatedSuite):
        print(updatedSuite.description) // "Updated description for this suite."
        print(updatedSuite.name) // "Updated name of this suite."
    }
}

删除一个部分

let section: Section = ...

objectAPI.deleteSection(section) { (outcome) in
    switch outcome {
    case .failure(let error):
        print(error.debugDescription)
    case .success(_): // nil on successful deletes
        print("The section has been successfully deleted.")
    }
}

关闭一个计划

let plan: Plan = ...

objectAPI.closePlan(plan) { (outcome) in
    switch outcome {
    case .failure(let error):
        print(error.debugDescription)
    case .success(let closedPlan):
        print(closedPlan.isCompleted) // true
        print(closedPlan.completedOn) // timestamp
    }
}

获取一个关系

let milestone: Milestone = ...

milestone.parent(objectAPI) { (outcome) in
    switch outcome {
    case .failure(let error):
        print(error.debugDescription)
    case .success(let optionalParent):
        if let parent = optionalParent {
            print("Milestone \(milestone.id) has a parent with an id of \(parent.id).")
        } else {
            print("Milestone \(milestone.id) does not have a parent.")
        }
    }
}

使用单个过滤器获取项目中的完成运行

let filters = [Filter(named: "is_completed", matching: true)]

objectAPI.getRuns(inProjectWithId: 3, filteredBy: filters) { (outcome) in
    switch outcome {
    case .failure(let error):
        print(error.debugDescription)
    case .success(let completedRuns):
        for completedRun in completedRuns {
            print(completedRun.isCompleted) // true
        }
    }
}

使用多个过滤器获取项目中的计划

let project: Project = ...
let filters = [Filter(named: "offset", matching: 3),
               Filter(named: "limit", matching: 5)]

objectAPI.getPlans(in: project, filteredBy: filters) { (outcome) in
    switch outcome {
    case .failure(let error):
        print(error.debugDescription)
    case .success(let plans): // There will be 5 or less plans.
        for plan in plans {
            print(plan.name)
        }
    }
}

错误

查看错误文档

测试

参见 QuizTrainTests 读取文件

实体

Image of Entities