qaxqa 1.3.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/qaxqa/cli/migrate.rb +28 -15
- data/lib/qaxqa/testsuite.rb +42 -20
- data/lib/qaxqa/version.rb +1 -1
- data/output.xlsx +0 -0
- data/qaxqa.gemspec +0 -3
- metadata +2 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 65c7e6593d86bb8f6e82dbd4e10ccb9697fe5f22
|
4
|
+
data.tar.gz: c2110cf9836ad4e27fdd5ac810ba55926cffbc26
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f1c2963433505ee554877d7274ea725292f2f20013f600cf3dd9c39546ca5e109e4fd9aee669e1570e8b6235b91b499d8b1681afea231c46b45ed3a9caf99c48
|
7
|
+
data.tar.gz: 578414e0aa6818a4e200ef49c8ccf542ee6086b4d3aef82e2b25645ce3f9b2444b47528554ed09f8a7eac4fcf5e4d89e80161c8006fcd629968d0015a7bc0d8f
|
data/lib/qaxqa/cli/migrate.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'byebug'
|
2
1
|
require 'qaxqa/all_suite'
|
3
2
|
module Qaxqa
|
4
3
|
# Migrate given xml files and outputs to XLS HP Quality Center format
|
@@ -13,6 +12,23 @@ module Qaxqa
|
|
13
12
|
|
14
13
|
private
|
15
14
|
|
15
|
+
def insert_cases(ws, cases, line)
|
16
|
+
cases.each_with_index do |tc|
|
17
|
+
tc.steps.each_with_index do |step|
|
18
|
+
line +=1
|
19
|
+
ws.add_cell(line, 0, tc.subject)
|
20
|
+
ws.add_cell(line, 1, tc.test_name)
|
21
|
+
ws.add_cell(line, 2, tc.summary)
|
22
|
+
ws.add_cell(line, 3, tc.preconditions)
|
23
|
+
ws.add_cell(line, 4, step.step_number)
|
24
|
+
ws.add_cell(line, 5, step.actions)
|
25
|
+
ws.add_cell(line, 6, step.expectedresults)
|
26
|
+
ws.add_cell(line, 7, tc.test_type)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
return line
|
30
|
+
end
|
31
|
+
|
16
32
|
def to_hpqc(file)
|
17
33
|
suites = extract file
|
18
34
|
workbook = RubyXL::Workbook.new
|
@@ -20,23 +36,20 @@ module Qaxqa
|
|
20
36
|
set_header worksheet
|
21
37
|
line = 0
|
22
38
|
suites.testsuites.each_with_index do |s|
|
39
|
+
subject_name = s.subject
|
23
40
|
line += 1
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
line
|
30
|
-
worksheet.add_cell(line, 0, tc.subject)
|
31
|
-
worksheet.add_cell(line, 1, tc.test_name)
|
32
|
-
worksheet.add_cell(line, 2, tc.summary)
|
33
|
-
worksheet.add_cell(line, 3, tc.preconditions)
|
34
|
-
worksheet.add_cell(line, 4, step.step_number)
|
35
|
-
worksheet.add_cell(line, 5, step.actions)
|
36
|
-
worksheet.add_cell(line, 6, step.expectedresults)
|
37
|
-
worksheet.add_cell(line, 7, tc.test_type)
|
41
|
+
if s.testsuites.size > 0
|
42
|
+
s.testsuites.each do |ss|
|
43
|
+
worksheet.add_cell(line, 0, subject_name)
|
44
|
+
worksheet.add_cell(line, 1, ss.test_name)
|
45
|
+
worksheet.add_cell(line, 2, ss.details)
|
46
|
+
line = insert_cases(worksheet, ss.testcases, line) if ss.testcases.size > 0
|
38
47
|
end
|
39
48
|
end
|
49
|
+
worksheet.add_cell(line, 0, subject_name)
|
50
|
+
worksheet.add_cell(line, 1, s.test_name)
|
51
|
+
worksheet.add_cell(line, 2, s.details)
|
52
|
+
line = insert_cases(worksheet, s.testcases, line) if s.testcases.size > 0
|
40
53
|
end
|
41
54
|
workbook.write("output.xlsx")
|
42
55
|
end
|
data/lib/qaxqa/testsuite.rb
CHANGED
@@ -3,7 +3,35 @@ module Qaxqa
|
|
3
3
|
# Module class to set XML parsed attributes to a suitecase object
|
4
4
|
class Testsuite
|
5
5
|
|
6
|
-
attr_accessor :subject, :test_name, :details, :testcases
|
6
|
+
attr_accessor :subject, :test_name, :details, :testcases, :testsuites
|
7
|
+
|
8
|
+
def self.has_suite?(node)
|
9
|
+
node.xpath('./testsuite').size > 0
|
10
|
+
end
|
11
|
+
|
12
|
+
# Parse testcases
|
13
|
+
def self.parse_testcases(testsuite)
|
14
|
+
testcases = []
|
15
|
+
testsuite.xpath("./testcase").each do |tc|
|
16
|
+
testcase = Testcase.new
|
17
|
+
testcase.steps = []
|
18
|
+
testcase.subject = suite.subject
|
19
|
+
testcase.test_name = tc.attributes["name"].value
|
20
|
+
testcase.summary = tc.xpath("./summary").text
|
21
|
+
testcase.preconditions = tc.xpath("./preconditions").text
|
22
|
+
testcase.test_type = "Manual"
|
23
|
+
# Parse steps
|
24
|
+
tc.xpath("./steps/*").each do |step_node|
|
25
|
+
step = Step.new
|
26
|
+
step.step_number = step_node.xpath("./step_number").text
|
27
|
+
step.actions = step_node.xpath("./actions").text
|
28
|
+
step.expectedresults = step_node.xpath("./expectedresults").text
|
29
|
+
testcase.steps << step
|
30
|
+
end
|
31
|
+
testcases << testcase
|
32
|
+
end
|
33
|
+
return testcases
|
34
|
+
end
|
7
35
|
|
8
36
|
def self.parse(doc)
|
9
37
|
root = doc.xpath("//testsuite/testsuite")
|
@@ -16,26 +44,20 @@ module Qaxqa
|
|
16
44
|
suite.subject = main_subject
|
17
45
|
suite.test_name = node.attributes["name"].value
|
18
46
|
suite.details = node.xpath("./details").text
|
19
|
-
suite.testcases =
|
20
|
-
|
21
|
-
node.children.xpath("./testcase").each do |tc|
|
22
|
-
testcase = Testcase.new
|
23
|
-
testcase.steps = []
|
24
|
-
testcase.subject = suite.subject
|
25
|
-
testcase.test_name = tc.attributes["name"].value
|
26
|
-
testcase.summary = tc.xpath("./summary").text
|
27
|
-
testcase.preconditions = tc.xpath("./preconditions").text
|
28
|
-
testcase.test_type = "Manual"
|
29
|
-
# Parse steps
|
30
|
-
tc.xpath("./steps/*").each do |step_node|
|
31
|
-
step = Step.new
|
32
|
-
step.step_number = step_node.xpath("./step_number").text
|
33
|
-
step.actions = step_node.xpath("./actions").text
|
34
|
-
step.expectedresults = step_node.xpath("./expectedresults").text
|
35
|
-
testcase.steps << step
|
36
|
-
end
|
47
|
+
suite.testcases = self.parse_testcases node
|
48
|
+
suite.testsuites = []
|
37
49
|
|
38
|
-
|
50
|
+
if self.has_suite? node
|
51
|
+
subnode = node.xpath("./testsuite")
|
52
|
+
subnode.each do |sn|
|
53
|
+
subsuite = Testsuite.new
|
54
|
+
subsuite.subject = main_subject
|
55
|
+
subsuite.test_name = sn.attributes["name"].value
|
56
|
+
subsuite.details = sn.xpath("./details").text
|
57
|
+
subsuite.testcases = self.parse_testcases sn
|
58
|
+
subsuite.testsuites = []
|
59
|
+
suite.testsuites << subsuite
|
60
|
+
end
|
39
61
|
end
|
40
62
|
suites << suite
|
41
63
|
end
|
data/lib/qaxqa/version.rb
CHANGED
data/output.xlsx
CHANGED
Binary file
|
data/qaxqa.gemspec
CHANGED
@@ -36,9 +36,6 @@ Gem::Specification.new do |spec|
|
|
36
36
|
spec.add_dependency "rubyXL"
|
37
37
|
|
38
38
|
# Development
|
39
|
-
spec.add_development_dependency "simplecov"
|
40
|
-
spec.add_development_dependency "pry"
|
41
|
-
spec.add_development_dependency "pry-byebug"
|
42
39
|
spec.add_development_dependency "bundler", "~> 1.13"
|
43
40
|
spec.add_development_dependency "rake", "~> 10.0"
|
44
41
|
spec.add_development_dependency "rspec", "~> 3.0"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qaxqa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ronaldo Possan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-06-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -66,48 +66,6 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: simplecov
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: pry
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: pry-byebug
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
69
|
- !ruby/object:Gem::Dependency
|
112
70
|
name: bundler
|
113
71
|
requirement: !ruby/object:Gem::Requirement
|