YONGFEIUALL

izheyi.com


  • Home

  • Archives

  • Categories

  • Tags

  • About

  • Search

关键字驱动测试框架之四 - 用例步骤管理

Posted on 2013-05-11 | In QTP |

在此部分我们可以对测试用例步骤进行CRUD,包括用例的Iteration Times, data drivern ==
Main

可以按照Step和Keyword两种方式进行添加:

  • 按照QTP的关键字开发思想进行添加
    Add Step
  • 按照用户自定义和built-in的Keyword进行添加
    Add Keyword

用户可以手动的为每个步骤添加参数(鼠标在某一行时,会显示该行的参数个数和名称),添加完毕后显示如下图:

对Keyword Action有两种处理方式:

  1. 如果是built-in, 直接显示在Action列里
  2. 如果是user-defined,Keyword显示在TestObject列中,在Action列是显示Call

关键字驱动测试框架之三 - 对象库管理

Posted on 2013-04-22 | In QTP |

对象库的管理:
用QTP添加对象,本框架目前只实现层级不超过三级的对象管理。如:
Browser(“XX”).Page(“XX”).WebButton(“XX”).Click
如果在添加时层级超过三层,请按实际情况删除一个层级,比如删除Frame层。

本框架中对象库的处理思路:
把TSR的对象库转化成XML格式,然后在Winform中添加测试步骤的时候从XML中提取值。

当前本框架的对象库是整体一个的处理,即要求被测试系统的所有对象放到一个文件中。

BTW, 本框架的对象管理最好是有一个人来管理,制定命名规则等,统一管理,这也是QTP自动化的Best Practice^_^

关键字驱动测试框架之二 - 框架目录管理

Posted on 2013-04-21 | In QTP |

框架目录的说明:
Framework

  • Object Repository:Deposit public Object Repositotry。
  • Test Case:Deposit Test Case DB。
  • Test Script:Deposit all QTP test。
  • Recovery Sceniao:Deposi RS file And custom RS function。
  • Test Config:Deposit dataSource file, relevant dll file, and some function’s extention API ==
  • Test Library:Deposit Public libraryies。
  • Test Report:Deposit Excel & HTML report。

关键字驱动测试框架之一 - 框架思想

Posted on 2013-04-05 | In QTP |

做QTP的同学都知道,脚本语言的编写重复性很烦琐,本身来说这样自动化,对不会编程的同学也有点障碍~~~

关键字驱动设计思想

把对象库里的对象处理后,用Winform来提取层级对象和Action操作,并保存到csv文件中;

Winform设计测试功能模块和测试用例,可同时操作,不需要编程能力,只需按照业务流程和选择配置;

对于一些公用流程或者Module,可能新建自然语言描述的Keyword;

每次选择要运行的测试用例,AOM管理QTP,并自动读取测试数据并拼接成QTP认识的脚本;

把测试结果写入到测试用例列表中;

对测试结果的统计分析等。

采用Winform 和 CSV文件来管理整个框架
主要包括:

  1. Case Step管理
  2. Keyword 管理 (一个或多个Action组成,如Login。。。)
  3. Global Setting
  4. Test Run
  5. Action 管理 (E.g., click, checkproperty….and all defined business functions)

注:本框架完全采用相对路径,无论放在何处,均可正常操作运行^_^
后期会陆续把每一步的实现都贴给大家分享,只是大概的思路实现。

winform中改变DataGridView中符合条件的字体的颜色

Posted on 2013-03-02 | In Winform |

在设计框架的时候,把QTP Report中的运行结果状态根据结果显示为不同的颜色:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) 
{
if (e.RowIndex < 0)
return;

if (e.ColumnIndex == dataGridView1.Columns["CaseStatus"].Index)
{
if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString() == "Passed")
{
e.CellStyle.ForeColor = Color.Green;
}
else if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString() == "Failed")
{
e.CellStyle.ForeColor = Color.Red;
}
else if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString() == "Warning")
{
e.CellStyle.ForeColor = Color.Goldenrod;
}
else if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString() == "No Run")
{
e.CellStyle.ForeColor = Color.Gray;
}
}
}

DataGridView单元格设置日期格式

Posted on 2013-03-01 | In Winform |
1
2
3
4
5
6
7
8
9
10
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
{
if (e.ColumnIndex == dataGridView1.Columns["StartTime"].Index || e.ColumnIndex == dataGridView1.Columns["EndTime"].Index)
{
if (dpString.dTrim(e.Value) != "")
{
e.Value = Convert.ToDateTime(e.Value).ToString("MM/dd/yyyy - HH:mm:ss");
}
}
}

DataGridView单元格显示多行的设置方法

Posted on 2013-02-28 | In Winform |
  1. 设置RowsDefaultCellStyle的WrapMode属性值为true(表示支持多行显示)

  2. 设置AllowUserToResizeColumns属性值为true(表示用户拉大行高)

  3. 设置AutoSizeRowsMode属性值为AllCells(表示所有单元格自动调节单元格高度),属性值为DisplayedCells(表示当前单元格自动调节高度,可以提高性能。)

怎样判断 datagridview 中的checkbox列是否被选中

Posted on 2013-02-21 | In Winform |
1
2
3
4
5
6
7
for (int i = 0; i < dataGridView1.Rows.Count; i++)   
{
if ((bool)dataGridView1.Rows[i].Cells[0].EditedFormattedValue==true)
{
//TODO
}
}

Winform界面中的分隔线

Posted on 2013-02-19 | In Winform |

具体方法如下:

  1. 拖一个Label标签控件,然后将其属性中的AutoSize设置为False(这样就可以手动设置大小了),
  1. 再将Size尺寸中的大小第二个参数高度设置为2,
  1. 最后把BorderStyle边框设置为Fixed3D样式就可以了,
  1. 然后拖动这个线到你想要放置的地方吧,就这么简单。

两个ListBox中的项左右移动

Posted on 2013-02-10 | In Winform |

实现如下图所示的功能:

代码如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/// <summary> 
/// Move one or more items from left to right
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MoveToRight_Click(object sender, EventArgs e)
{

int ItemCount = AllTestCase.SelectedItems.Count;

if (ItemCount > 0)
{
for (int i = 0; i < ItemCount; i++)
{
SelectedTestCase.Items.Add(AllTestCase.SelectedItem);
AllTestCase.Items.Remove(AllTestCase.SelectedItem);
}
}
else
{
MessageBox.Show("Please select one or more items.");
}
}

/// <summary>
/// Move all items from left to right
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MoveAllToRight_Click(object sender, EventArgs e)
{

SelectedTestCase.Items.AddRange(AllTestCase.Items);
AllTestCase.Items.Clear();
}

/// <summary>
/// Move one or more items from right to left
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MoveToLeft_Click(object sender, EventArgs e)
{

int ItemCount = SelectedTestCase.SelectedItems.Count;

if (ItemCount > 0)
{
for (int i = 0; i < ItemCount; i++)
{
AllTestCase.Items.Add(SelectedTestCase.SelectedItem);
SelectedTestCase.Items.Remove(SelectedTestCase.SelectedItem);
}
}
else
{
MessageBox.Show("Please select one or more items.");
}

}

/// <summary>
/// Move all items from right to left
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MoveAllToLeft_Click(object sender, EventArgs e)
{

AllTestCase.Items.AddRange(SelectedTestCase.Items);
SelectedTestCase.Items.Clear();
}

1…363738…40
唐胡璐

唐胡璐

i just wanna live while i am alive

393 posts
42 categories
74 tags
RSS
LinkedIn Weibo GitHub E-Mail
Creative Commons
© 2022 唐胡璐
Powered by Hexo
|
Theme — NexT.Pisces v5.1.4