Postupy: Vytvoření vlastního editoru těla HTTP pro editor testů výkonnosti webu
Publikováno: duben 2016
Můžete vytvořit vlastní editor obsahu, který umožňuje upravovat obsah řetězce textu nebo binární obsah textu požadavku webové služby, například protokol SOAP, REST, asmx, wcf, RIA a jiných typů požadavků na webové služby.
Požadavky
- Visual Studio Enterprise
Můžete používat tyto typy editory:
Řetězcový editor obsahu Toto je implementováno pomocí rozhraní IStringHttpBodyEditorPlugin.
Binární editor obsahu Toto je implementováno pomocí rozhraní IBinaryHttpBodyEditorPlugin.
Tato rozhraní jsou obsažena v oboru názvů Microsoft.VisualStudio.TestTools.WebTesting.
Vytvoření projektu knihovny ovládací prvků Windows
Vytvořte uživatelský ovládací prvek pomocí projektu knihovny ovládacích prvků systému Windows
V sadě Visual Studio na soubor nabídce zvolte Nový a potom vyberte projektu.
Zobrazí se dialogové okno Nový projekt.
V části Nainstalované šablony vyberte buď Jazyk Visual Basic nebo Visual C# v závislosti na vašich preferencích programování, a pak vyberte Windows.
Poznámka
Tato ukázka používá Visual C#.
V seznamu šablon vyberte možnost Knihovna ovládacích prvků formulářů Windows.
Do testového pole Název zadejte název, jako např. MessageEditors a klikněte na tlačítko OK.
Poznámka
Tato ukázka používá MessageEditors.
Projekt je přidán do nového řešení a UserControl s názvem UserControl1.cs je předložen v návrháři.
Z panelu nástrojů pod kategorií Běžné ovládací prvky přetáhněte RichTextBox na povrch UserControl1.
Zvolte glyfů značku akce (
) v pravém horním rohu RichTextBox ovládací prvek a potom vyberte a Ukotvit v nadřazeném kontejneru.
V Průzkumníku řešení klikněte pravým tlačítkem myši na projekt Windows Forms Library a vyberte možnost Vlastnosti.
V okně Vlastnosti vyberte kartu Aplikace.
V rozevíracím seznamu Cílové rozhraní vyberte .NET Framework 4.
Zobrazí se dialogové okno Změnit cílový rámec.
Zvolte Ano.
V Průzkumníku řešení klikněte pravým tlačítkem na uzel Odkazy a poté vyberte příkaz Přidat odkaz.
Zobrazí se dialogové okno Přidat odkaz.
Zvolte kartu .NET, přejděte dolů a vyberte Microsoft.VisualStudio.QualityTools.WebTestFramework a pak vyberte OK.
Pokud Návrhář zobrazení není stále otevřen v okně Průzkumník řešení, klepněte pravým tlačítkem myši na UserControl1.cs a potom vyberte Návrhář zobrazení.
Na návrhové ploše klikněte pravým tlačítkem myši a vyberte možnost Zobrazit kód.
(Volitelné) Změňte název třídy a konstruktoru z UserControl1 na smysluplný název, například MessageEditorControl:
Poznámka
Ukázka používá MessageEditorControl.
namespace MessageEditors { public partial class MessageEditorControl : UserControl { public MessageEditorControl() { InitializeComponent(); } } }
Přidejte následující vlastnosti umožňující získání a nastavení textu v RichTextBox1. Rozhraní IStringHttpBodyEditorPlugin bude používat EditString a IBinaryHttpBodyEditorPlugin bude používat EditByteArray:
public String EditString { get { return this.richTextBox1.Text; } set { this.richTextBox1.Text = value; } } public byte[] EditByteArray { get { return System.Convert.FromBase64String(richTextBox1.Text); } set { richTextBox1.Text = System.Convert.ToBase64String(value, 0, value.Length); } }
Přidejte třídu pro projekt knihovny ovládacích prvků Windows
Do projektu přidejte třídu. Bude použit k implementaci rozhraní IStringHttpBodyEditorPlugin a IBinaryHttpBodyEditorPlugin.
Přehled kódu v tomto postupu
Pro MessageEditorControl UserControl vytvořený v rámci předchozího postupu je vytvořena instance messageEditorControl:
private MessageEditorControl messageEditorControl
Instance MessageEditorControl je hostována v dialogovém okně modulu plug-in, který je vytvořen pomocí metody CreateEditor. Kromě toho pole messageEditorControl RichTextBox bude vyplněno obsahem v IHttpBody. Vytvoření modulu plug-in však nelze provést, pokud SupportsContentType nevrátí true. V případě tohoto editoru SupportsContentType vrátí true, pokud ContentType v IHttpBody obsahuje "xml".
Po dokončení úprav textu řetězce a při kliknutí na OK v dialogovém okně modulu plug-in je volána metoda GetNewValue pro získání upraveného textu jako řetězce a aktualizaci textu řetězce v požadavku v Editoru testování výkonu webu.
Vytvoření třídy a implementace kódu rozhraní IStringHttpBodyEditorPlugin
V Průzkumníku řešení klikněte pravým tlačítkem myši na projekt Knihovna ovládacích prvků formulářů Windows a vyberte možnost Přidat novou položku.
Zobrazí se dialogové okno Přidat novou položku.
Vyberte třídu.
Do textového pole Název zadejte smysluplný název třídy, například MessageEditorPlugins.
Zvolte možnost Přidat.
Class1 je přidána do projektu a zobrazí se v editoru kódu.
V Editoru kódu zadejte následující příkazy:
using Microsoft.VisualStudio.TestTools.WebTesting;
Napište nebo zkopírujte následující kód k vytvoření instance třídy XmlMessageEditor z rozhraní IStringHttpBodyEditorPlugin a implementuje požadované metody:
/// <summary> /// Editor for generic text based hierarchical messages such as XML and JSON. /// </summary> public class XmlMessageEditor : IStringHttpBodyEditorPlugin { public XmlMessageEditor() { } /// <summary> /// Determine if this plugin supports the content type. /// </summary> /// <param name="contentType">The content type to test.</param> /// <returns>Returns true if the plugin supports the specified content type.</returns> public bool SupportsContentType(string contentType) { return contentType.ToLower().Contains("xml"); } /// <summary> /// Create a UserControl to edit the specified bytes. /// This control will be hosted in the /// plugin dialog which provides OK and Cancel buttons. /// </summary> /// <param name="contentType">The content type of the BinaryHttpBody.</param> /// <param name="initialValue">The bytes to edit. The bytes are the payload of a BinaryHttpBody.</param> /// <returns>A UserControl capable of displaying and editing the byte array value of the specified content type.</returns> public object CreateEditor(string contentType, string initialValue) { messageEditorControl = new MessageEditorControl(); messageEditorControl.EditString = initialValue; return this.messageEditorControl; } /// <summary> /// Gets the edited bytes after the OK button is clicked on the plugin dialog. /// </summary> public string GetNewValue() { return messageEditorControl.EditString; } private MessageEditorControl messageEditorControl; }
Přidání modulu plugin IBinaryHttpBodyEditorPlugin do třídy
Implementovat rozhraní IBinaryHttpBodyEditorPlugin.
Přehled kódu v tomto postupu
Implementace kódu pro rozhraní IBinaryHttpBodyEditorPlugin je podobná IStringHttpBodyEditorPlugin uvedené v předchozí proceduře. Binární verze však používá pole bajtů pro zpracovat binárních dat namísto řetězce.
Pro MessageEditorControl UserControl vytvořený v rámci prvního postupu je vytvořena instance messageEditorControl:
private MessageEditorControl messageEditorControl
Instance MessageEditorControl je hostována v dialogovém okně modulu plug-in, který je vytvořen pomocí metody CreateEditor. Kromě toho pole messageEditorControl RichTextBox bude vyplněno obsahem v IHttpBody. Vytvoření modulu plug-in však nelze provést, pokud SupportsContentType nevrátí true. V případě tohoto editoru SupportsContentType vrátí true, pokud ContentType v IHttpBody obsahuje "msbin1".
Po dokončení úprav textu řetězce a při kliknutí na OK v dialogovém okně modulu plug-in je volána metoda GetNewValue pro získání upraveného textu jako řetězce a aktualizaci souboru BinaryHttpBody.Data v požadavku v Editoru testování výkonu webu.
Přidání modulu plugin IBinaryHttpBodyEditorPlugin do třídy
Napište nebo zkopírujte následující kód ve třídě XmlMessageEditor přidaný v předchozím postupu k vytvoření instance třídy Msbin1MessageEditor z rozhraní IBinaryHttpBodyEditorPlugin a implementujte požadované metody:
/// <summary> /// Editor for MSBin1 content type (WCF messages) /// </summary> public class Msbin1MessageEditor : IBinaryHttpBodyEditorPlugin { /// <summary> /// /// </summary> public Msbin1MessageEditor() { } /// <summary> /// Determine if this plugin supports a content type. /// </summary> /// <param name="contentType">The content type to test.</param> /// <returns>Returns true if the plugin supports the specified content type.</returns> public bool SupportsContentType(string contentType) { return contentType.ToLower().Contains("msbin1"); } /// <summary> /// Create a UserControl to edit the specified bytes. This control will be hosted in the /// plugin dialog which provides OK and Cancel buttons. /// </summary> /// <param name="contentType">The content type of the BinaryHttpBody.</param> /// <param name="initialValue">The bytes to edit. The bytes are the payload of a BinaryHttpBody.</param> /// <returns>A UserControl capable of displaying and editing the byte array value of the specified content type.</returns> public object CreateEditor(string contentType, byte[] initialValue) { messageEditorControl = new MessageEditorControl(); messageEditorControl.EditByteArray = initialValue; return messageEditorControl; } /// <summary> /// Gets the edited bytes after the OK button is clicked on the plugin dialog. /// </summary> public byte[] GetNewValue() { return messageEditorControl.EditByteArray; } private MessageEditorControl messageEditorControl; private object originalMessage; }
Vytvoření a nasazení modulů plug-in
Vytvoření a nasazení výsledné dll pro IStringHttpBodyEditorPlugin a IBinaryHttpBodyEditorPlugin
V nabídce sestavení zvolte sestavení < název projektu knihovny ovládacích prvků formuláře Windows >.
Ukončete všechny instance aplikace Visual Studio.
Poznámka
Tím je zajištěno, že soubor DLL není uzamčen před pokusem o jej zkopírujte.
Zkopírujte výsledný soubor DLL ze složky projektů bin\debug (například MessageEditors.dll) do %ProgramFiles%\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies\WebTestPlugins.
Otevřete aplikaci Visual Studio.
Soubor knihovny DLL mají nyní zaregistrováni se sadou Visual Studio.
Zkontrolujte moduly plug-in pomocí testu výkonnosti webu
Otestování modulů plug-in
Vytvořte projekt testu.
Vytvořte Web, výkon, testování a zadejte adresu URL v prohlížeči webové služby, například http://dev.virtualearth. NET/WebServices/V1/metadata/searchservice/dev.virtualearth. NET.WebServices.v1.Search.WSDL.
Po dokončení nahrávání v editoru testování výkonu webu rozbalte požadavek na webovou službu a vyberte buď Tělo řetězce nebo Tělo binárního souboru.
V okně Vlastnosti vyberte text řetězce nebo binární tělo a zvolte tři tečky (...).
Zobrazí se dialogové okno Upravit data těla protokolu HTTP.
Nyní můžete upravovat data a klepnout na tlačítko OK. To vyvolá vhodnou metodu GetNewValue k aktualizaci obsahu v IHttpBody.
Probíhá kompilace kódu
Ověřte, zda cílový systém knihovny ovládacích prvků projektu Windows je .NET Framework 4.5. Ve výchozím nastavení projekty knihovny ovládacích prvků Windows standardně cílí na klienta rozhraní .NET Framework 4.5, který nedovolí zařazení odkazu na Microsoft.VisualStudio.QualityTools.WebTestFramework.
Další informace naleznete v tématu Stránka Aplikace, návrhář projektu (C#).
Viz také
IStringHttpBodyEditorPlugin
CreateEditor
SupportsContentType
GetNewValue
IBinaryHttpBodyEditorPlugin
CreateEditor
SupportsContentType
GetNewValue
IHttpBody
ContentType
UserControl
RichTextBox
Vytvoření vlastního kódu a modulů plugin pro zátěžové testování
Postupy: Vytvoření modulu plugin na úrovni požadavků
Vytvoření vlastního pravidla extrakce pro test výkonnosti webu
Vytvoření vlastního ověřovacího pravidla pro test výkonnosti webu
Postupy: Vytvoření modulu plugin pro zátěžový test
[vyřazeno] Postupy: Vytvoření programového testu výkonnosti webu
Postupy: Vytvoření doplňku sady Visual Studio pro prohlížeč výsledků testu výkonnosti webu